Presentation is loading. Please wait.

Presentation is loading. Please wait.

Self-Balancing Search Trees Chapter 11. Chapter Objectives  To understand the impact that balance has on the performance of binary search trees  To.

Similar presentations


Presentation on theme: "Self-Balancing Search Trees Chapter 11. Chapter Objectives  To understand the impact that balance has on the performance of binary search trees  To."— Presentation transcript:

1 Self-Balancing Search Trees Chapter 11

2 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  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

3 Why Balance is Important  Searches into an unbalanced search tree could be O(n) at worst case

4 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  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

5 Rotation (continued)

6

7

8 Implementing Rotation

9 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  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

10 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  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

11 Balancing a Left-Right Tree  Root is left-heavy but the left subtree of the root is right-heavy  A simple right rotation cannot fix this  Need both left and right rotations  Root is left-heavy but the left subtree of the root is right-heavy  A simple right rotation cannot fix this  Need both left and right rotations

12 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  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

13 Implementing an AVL Tree

14 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  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

15 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  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

16 Insertion into a Red-Black Tree (continued)

17 Implementation of a Red-Black Tree Class

18 Algorithm for Red-Black Tree Insertion

19 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  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

20 Searching a 2-3 Tree

21 Searching a 2-3 Tree (continued)

22 Inserting into a 2-3 Tree

23 Algorithm for Insertion into a 2-3 Tree

24 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  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

25 Removal from a 2-3 Tree (continued)

26 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  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

27 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  Expand on the idea of 2-3 trees by adding the 4-node  Addition of this third item simplifies the insertion logic

28 Algorithm for Insertion into a 2-3- 4 Tree

29 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  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

30 Relating 2-3-4 Trees to Red-Black Trees (continued)

31

32 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  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

33 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  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

34 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  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


Download ppt "Self-Balancing Search Trees Chapter 11. Chapter Objectives  To understand the impact that balance has on the performance of binary search trees  To."

Similar presentations


Ads by Google