Tree Definitions

advertisement
Tree Definitions
A graph is a set G = (V, E), where V is a (normally non-empty) set of vertices (singular vertex)
and E (for edges) is a (possibly empty) set of (normally unordered) pairs of vertices. Vertices
are sometimes called nodes (as in trees, which are special cases of graphs).
Edges may be ordered, in which case they are often called arcs. A graph with ordered edges is
said to be directed, and is called a digraph. Graphs with unordered edges are sometimes called
undirected graphs, to differentiate them from digraphs. Duplicate edges/arcs usually are not
allowed. An edge or arc from a vertex to itself is called a loop. A sequence of edges from a
vertex through one or more other vertices, without passing through any vertex twice, and going
back to the original vertex, is called a cycle, and a graph with no cycles is said to be acyclic.
A tree is a graph with special properties. In trees, the vertices are normally called nodes. Trees
may be either directed or undirected graphs (some texts restrict this, but the Childs text does not).
Trees are always acyclic. One way to define the properties of trees is recursively: A tree is
either empty; or it has a special node r, called the root, and zero or more non-empty subtrees T1,
T2, ..., Tk, the roots of each being connected by an arc from r.
The root of each subtree of r is said to be a child of r, and r is the parent of each subtree root.
We may define grandparent and grandchild similarly, e.g., a parent's parent or a child's child.
Nodes with no children are called leaves (singular leaf) or exterior, external, outer, or terminal
nodes. Any node with at least one child is an interior (or internal, inner, or branch) node.
Nodes with the same parent are called siblings. A path from node n1 to nk is defined as a
sequence of nodes n1, n2, ..., nk such that ni is the parent of n(i+1) for 1 ≤ i < k. The length of this
path is the number of arcs on the path, or k-1. There is assumed to be a path of zero length from
any node in a tree to itself. There will be at most one path from any node in the tree to any other
node in the tree.
For any node ni, the depth of ni is defined to be the length of the unique path from the root to ni.
The root is at depth zero. The height of any node ni is the length of the longest path from ni to a
leaf. The height of the tree is the height of the root. All nodes at the same depth are at the same
level, with the root at level zero, its children at level one, etc.
If there exists a path from n1 to n2, n1 is an ancestor of n2, and n2 is a descendant of n1. If n1 ≠
n2, then n1 is a proper ancestor of n2, and n2 is a proper descendant of n1. Normally, when we
talk about ancestors or descendants, we imply proper ancestors and descendants.
An n-ary tree is a tree where each node has no more than n children. A binary tree in an n-ary
tree with n = 2. The children of any node in a binary tree are called the left child or the right
child, depending on the side they are on compared to their parent. A full binary tree is one
where all levels that contain nodes have the maximum possible number of nodes. A complete
binary tree is one in which all levels except the last have the maximum possible number of
nodes, and the last level is full from the left.
Loops are not allowed in a tree, therefore for a tree of n nodes, there will be exactly n-1 arcs.
Download