SelfBalancing Search Trees Chapter 11 SelfBalancing Search Trees
Self-Balancing Search Trees Chapter 11: Self-Balancing Search Trees
Chapter Objectives • To understand the impact that balance has on the performance of binary search trees • To learn about the AVL tree for storing and maintaining a binary search tree in balance • To learn about the Red-Black tree for storing and maintaining a binary search tree in balance • To learn about 2 -3 trees, 2 -3 -4 trees, and B-trees and how they achieve balance • To understand the process of search and insertion in each of these trees and to be introduced to removal Chapter 11: Self-Balancing Search Trees 2
Why Balance is Important • Searches into an unbalanced search tree could be O(n) at worst case Chapter 11: Self-Balancing Search Trees 3
Rotation • To achieve self-adjusting capability, we need an operation on a binary tree that will change the relative heights of left and right subtrees but preserve the binary search tree property • Algorithm for rotation • Remember value of root. left (temp = root. left) • Set root. left to value of temp. right • Set temp. right to root • Set root to temp Chapter 11: Self-Balancing Search Trees 4
Rotation (continued) Chapter 11: Self-Balancing Search Trees 5
Rotation (continued) Chapter 11: Self-Balancing Search Trees 6
Rotation (continued) Chapter 11: Self-Balancing Search Trees 7
Implementing Rotation Chapter 11: Self-Balancing Search Trees 8
AVL Tree • As items are added to or removed from the tree, the balance or each subtree from the insertion or removal point up to the root is updated • Rotation is used to bring a tree back into balance • The height of a tree is the number of nodes in the longest path from the root to a leaf node Chapter 11: Self-Balancing Search Trees 9
Balancing a Left-Left Tree • The heights of the left and right subtrees are unimportant; only the relative difference matters when balancing • A left-left tree is a tree in which the root and the left subtree of the root are both left-heavy • Right rotations are required Chapter 11: Self-Balancing Search Trees 10
Balancing a Left-Right Tree • Root is left-heavy but the left subtree of the root is rightheavy • A simple right rotation cannot fix this • Need both left and right rotations Chapter 11: Self-Balancing Search Trees 11
Four Kinds of Critically Unbalanced Trees • Left-Left (parent balance is -2, left child balance is -1) • Rotate right around parent • Left-Right (parent balance -2, left child balance +1) • Rotate left around child • Rotate right around parent • Right-Right (parent balance +2, right child balance +1) • Rotate left around parent • Right-Left (parent balance +2, right child balance -1) • Rotate right around child • Rotate left around parent Chapter 11: Self-Balancing Search Trees 12
Implementing an AVL Tree Chapter 11: Self-Balancing Search Trees 13
Red-Black Trees • Rudolf Bayer developed the red-black tree as a special case of his B-tree • A node is either red or black • The root is always black • A red node always has black children • The number of black nodes in any path from the root to a leaf is the same Chapter 11: Self-Balancing Search Trees 14
Insertion into a Red-Black Tree • Follows same recursive search process used for all binary search trees to reach the insertion point • When a leaf is found, the new item is inserted and initially given the color red • It the parent is black we are done otherwise there is some rearranging to do Chapter 11: Self-Balancing Search Trees 15
Insertion into a Red-Black Tree (continued) Chapter 11: Self-Balancing Search Trees 16
Implementation of a Red-Black Tree Class Chapter 11: Self-Balancing Search Trees 17
Algorithm for Red-Black Tree Insertion Chapter 11: Self-Balancing Search Trees 18
2 -3 Trees • 2 -3 tree named for the number of possible children from each node • Made up of nodes designated as either 2 -nodes or 3 nodes • A 2 -node is the same as a binary search tree node • A 3 -node contains two data fields, ordered so that first is less than the second, and references to three children • One child contains values less than the first data field • One child contains values between the two data fields • Once child contains values greater than the second data field • 2 -3 tree has property that all of the leaves are at the lowest level Chapter 11: Self-Balancing Search Trees 19
Searching a 2 -3 Tree Chapter 11: Self-Balancing Search Trees 20
Searching a 2 -3 Tree (continued) Chapter 11: Self-Balancing Search Trees 21
Inserting into a 2 -3 Tree Chapter 11: Self-Balancing Search Trees 22
Algorithm for Insertion into a 2 -3 Tree Chapter 11: Self-Balancing Search Trees 23
Removal from a 2 -3 Tree • Removing an item from a 2 -3 tree is the reverse of the insertion process • If the item to be removes is in a leaf, simply delete it • If not in a leaf, remove it by swapping it with its inorder predecessor in a leaf node and deleting it from the leaf node Chapter 11: Self-Balancing Search Trees 24
Removal from a 2 -3 Tree (continued) Chapter 11: Self-Balancing Search Trees 25
2 -3 -4 and B-Trees • 2 -3 tree was the inspiration for the more general B-tree which allows up to n children per node • B-tree designed for building indexes to very large databases stored on a hard disk • 2 -3 -4 tree is a specialization of the B-tree because it is basically a B-tree with n equal to 4 • A Red-Black tree can be considered a 2 -3 -4 tree in a binary-tree format Chapter 11: Self-Balancing Search Trees 26
2 -3 -4 Trees • Expand on the idea of 2 -3 trees by adding the 4 -node • Addition of this third item simplifies the insertion logic Chapter 11: Self-Balancing Search Trees 27
Algorithm for Insertion into a 2 -3 -4 Tree Chapter 11: Self-Balancing Search Trees 28
Relating 2 -3 -4 Trees to Red-Black Trees • A Red-Black tree is a binary-tree equivalent of a 2 -3 -4 tree • A 2 -node is a black node • A 4 -node is a black node with two red children • A 3 -node can be represented as either a black node with a left red child or a black node with a right red child Chapter 11: Self-Balancing Search Trees 29
Relating 2 -3 -4 Trees to Red-Black Trees (continued) Chapter 11: Self-Balancing Search Trees 30
Relating 2 -3 -4 Trees to Red-Black Trees (continued) Chapter 11: Self-Balancing Search Trees 31
B-Trees • A B-tree extends the idea behind the 2 -3 and 2 -3 -4 trees by allowing a maximum of CAP data items in each node • The order of a B-tree is defined as the maximum number of children for a node • B-trees were developed to store indexes to databases on disk storage Chapter 11: Self-Balancing Search Trees 32
Chapter Review • Tree balancing is necessary to ensure that a search tree has O(log n) behavior • An AVL tree is a balanced binary tree in which each node has a balance value that is equal to the difference between the heights of its right and left subtrees • For an AVL tree, there are four kinds of imbalance and a different remedy for each • A Red-Black tree is a balanced tree with red and black nodes • To maintain tree balance in a Red-Black tree, it may be necessary to recolor a node and also to rotate around a node Chapter 11: Self-Balancing Search Trees 33
Chapter Review (continued) • Trees whose nodes have more than two children are an alternative to balanced binary search trees • A 2 -3 -4 tree can be balanced on the way down the insertion path by splitting a 4 -node into two 2 -nodes before inserting a new item • A B-tree is a tree whose nodes can store up to CAP items and is a generalization of a 2 -3 -4 tree Chapter 11: Self-Balancing Search Trees 34
- Slides: 34