# Terminal and nonterminal functions

In computer science, a **nonterminal function** is a function (node) in a parse tree which is either a root or a branch in that tree whereas a **terminal function** is a function (node) in a parse tree which is a leaf.

## Background

A parse tree is made up of nodes and branches.[1] In the picture below the parse tree is the entire structure, starting from S and ending in each of the leaf nodes (John,ball,the,hit).

In a parse tree, each node is either a *root* node, a *branch* node, or a *leaf* node. In the above example, S is a root node, NP and VP are branch nodes, while John, ball, the, and hit are all leaf nodes.

Nodes can also be referred to as parent nodes and child nodes. A *parent* node is one which has at least one other node linked by a branch under it. In the example, S is a parent of both NP and VP. A *child* node is one which has at least one node directly above it to which it is linked by a branch of the tree. Again from our example, hit is a child node of V.