Trees
- Tree: a relation in which there is a uniqiue path from the root to the other vertexes
- Root $v_0$: the root node
- Rooted tree: $(T, v_0)$:
- Geometic properties
- $v_0$ is the only root of $T$
- Tree's have cycles
- $v_0$ has in-degree 0, $v != v_0$ has in-degree 1
- Relational properties
- Irreflexive
- Assymmetric
- Not transitive (inverse of transitive)
- Terminology
- Level: steps from root node, starts at zero
- Height: number of largest level
- Siblings: nodes with the same parent
- Leaves: nodes that have no children
- Ancestors: all connections upwards
- Descendants: all connetions downards
- n-tree/n-ary tree: each vertex has at most n children
- Complete n-tree: each vertex has exactly n children (except for the leaves)
- Binary tree: name for 2-trees
- Positional tree: positive integers as child positions $1, ..., n$ (ordered)
- Labeled trees: each node has a label attached to it
- Subtree
- $B_v$ set of all decendatns of $v$
- Subtree: $T(v) = T \cap (B_v \times B_v$ restriction of $T$ to $B_v$
- Is also a tree
Examples/applications of trees #
- Syntax tree: used in compilers and calculators
- Draw by reading from outside to the inside
- Huffman code: follow edges in order of bits until you get to a label, repeat from the root node until all bits are decoded
- Binary search tree
- Tries/prefix trees
- Character encoding
Tree search #
Linked-list representation: method to create a binary tree from a general tree to apply search on it
- Left edges: relations from parent to first child.
- Right edges: the siblings (in order of the tree).
Depth-first search (DFS) #
On a binary tree, in which: Node (N), Left (L), Right (R):
- Preorder search (NLR)
- Inorder search (LNR)
- Postorder search (LRN)
Undirected trees #
- Undirected tree: the symmetric closure of a tree
- Undirected edge: $\{a, b\}$ = $(a, b), (b, a)$
- Graphs instead of digraphs (lines represent undirected edges)
- Adjacent: a and b are adjacent if there is an undirected edge between them
Spanning Trees #
Let $R$ be a symmetric connected relation:
- Spanning tree: exactly the vertices of $R$, can be obtained by deleting edges from $R$
- Weighted graphs: graph in which every edge has a weight
- Undirected spanning tree: the symmetric closure of a spanning tree
- Minimal spanning tree: an undirected spanning tree for which the weight is minimal
- Algorithms:
- Prim's algorithm: adds one vertex at a time and checks for minimality
- Kruskal's algorithm: sort edges by weight and add one edge at a time and check for acyclicity