Search Trees
Binary Search Trees (BST)
Related homework questions: h3-6
Binary Tree
A binary tree is a set of nodes where each node has two pointers, .left and .right.
The size of is .
Complete Binary Tree
Every level of the tree is completely filled, except possibly the last level. Moreover, the last level has to be filled from left to right.
If a complete binary tree is also complete on the last level, then it is called a perfect binary tree.
Height of binary trees
Minimum number of nodes in a binary tree of height :
Maximum number of nodes in a binary tree of height :
The minimum height of binary trees with nodes:
Binary Search Tree
A binary tree is a binary search tree if each node has a field .key that satisfies the BST property:
AVL Trees
Related homework questions: h3-7, h3-8
An AVL tree is a binary search tree where the left subtree and right subtree at each node differ by at most 1 in height.
Balance Factor
More generally, define the balance of any node of a binary tree to be the height of the left subtree minus the height of the right subtree:
Insertion and Deletion Algorithms
UPDATE PHASE: Insert or delete as we would in a binary search tree.
REBALANCE PHASE: Let be parent of the node that was just inserted, or just cut during deletion, in the UPDATE PHASE. THe path from to the root will be called the rebalance path. We now move up this path, rebalancing nodes along this path as necessary.
Let be the first unbalanced node we encounter along the rebalance path from bottom to top. It is clear that has a balance of . The situation is illustrated below:
Insertion Rebalancing
CASE (I.a): and . This means that the inserted node is in the left subtree of . In this case, we rotate , the result would be balanced. Moreover, the height of is now . We call this the "single-rotation" case.
CASE (I.b): and . This means that the inserted node is in the right subtree of . In this case, let us expand the subtree and let be its root. The two children of will have heights and where . Now a double-rotation at results in a balanced tree of height rooted at .
Deletion Rebalancing
CASE (D.a): and . This is like case (I.a) and treated in the same way, namely a single rotation at . Now is replaced by after this rotation, and the new height of is . Now is AVL balanced. However, since the original height is , there may beb unbalanced node further up the rebalance path. Thus, this is a non-terminal case.
CASE (D.b): and . This is like case (I.b) and treated in the same way, namely a double rotation at . Again, this is a non-terminal case.
CASE (D.c): . This case is new, we simply rotate at . We check that is balanced and has height . Since is in the place of which has height originally, we can safely terminate the rebalancing process.
Ratio/Weight Balanced Trees
Related homework questions: h4-3
Extended size:
Ratio:
ρ-ratio
Insertion and Deletion Algorithms
Example:
UPDATE PHASE: Insert or delete as we would in a binary search tree. In insertion, this results in a new leaf in . If deletion, we will physically "cut" the leaf from .
REBALANCE PHASE: Let be the parent of . Clearly, every node that is not RB balanced must lie on the root-path of . We therefore move up this path, rebalancing any such node.
Generalized B-Trees: (2,3)-trees
Related homework questions: h4-1, h4-2
An (a,b)-tree is a rooted, ordered tree with the following structural constraints:
Depth property: All leaves are at the same depth.
Degree bound: Let be the number of children of an internal node . This is also known as the degree of . In general, we have the bounds .
The root is an exception, with the bound .
(a,b)-search trees
Lecture Note 3, Page 80.
An (a,b)-search tree is an (a,b)-tree whose nodes are organized as an external search tree, which means items are only stored in leaves. Leaves are also called external nodes.
Leaves: where .
Default assumption for leaves: .
Reorganization of nodes
For an internal node ,
is overfull if its degree is .
is underfull if its degree is .
Simple Remedy: borrow or donate children
Strong Remedy: when simple remedy fails.
Split an overfull node
Merge an underfull node
Split-Merge Inequality
This is a combination of split inequality () and merge inequality (). Since and are integers, these two are equivalent.
Last updated