Trees - Gecko05/AlgorithmsInC GitHub Wiki
Trees
Trees are used to describe dynamic properties of algorithms
- Explicit data structures that are concrete realizations of trees
- Most familiar application is file system
- Empty collection of vertices(nodes) connected by edges. A path is a list of successive vertices connected by edges.
- Disjoint set of trees is a forest
- Only one path connecting any two nodes, otherwise it's a graph.
- The convention is draw the root at the top.
- Nodes with no children are called leaves, terminal nodes.
- Trees can be ordered or not.
- Ordered forests can be represented as binary trees by putting childs to the left and sibilings to the right.
- Tree-isomorphism problem is about representing undordered trees are ordered trees. Or trees that are basically the same, just with some nodes reordered or swapped.
- Internal nodes are nodes with children. External nodes do not have children.
- The level of a node is one higher than the parent's.
- The path length of a tree is the sum of the levels of all the tree's nodes.
- The internal path length is the sum of the levels of all interal nodes.
- The external path lenght is the sum of the levels of all external nodes.
- A degenerate tree is a tree with only one child per leaf, thus behaves like a linked list.
Tree properties
- A binary tree with N internal nodes has N+1 external nodes.
- A binary tree with N internal nodes has 2N links. N -1 links to internal nodes and N + 1 links to external nodes.
- The external path length of any binary tree with N internal nodes is 2N greater than the internal path lenght.
- The height of a binary tree with N internal nodes is at aleast lgN and at most N - 1.
- The internal path length of a binary tree with N internal nodes is at least Nlg(N/4) and at most N(N - 1)/2.
Tree traversal
- Preorder where we visit the node, then the left and right subtrees.
- Inorder visit left subtree, then node, then right subtree.
- Postorder visit the left and right subtrees, then the node.
- Level-order visit top-down, left-right, nodes per level.
Types
- Trees
- Rooted trees: We have a node designated as a root. A free tree is not a rooted one.
- Ordered trees or general trees
- M-ary trees and binary trees