1 / 34

Self-Balancing Search Trees

Self-Balancing Search Trees. Chapter 11. 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

Télécharger la présentation

Self-Balancing Search Trees

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

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 Chapter 11: Self-Balancing Search Trees

  3. Why Balance is Important • Searches into an unbalanced search tree could be O(n) at worst case Chapter 11: Self-Balancing Search Trees

  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 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. Rotation (continued) Chapter 11: Self-Balancing Search Trees

  8. Implementing Rotation Chapter 11: Self-Balancing Search Trees

  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 Chapter 11: Self-Balancing Search Trees

  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 Chapter 11: Self-Balancing Search Trees

  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 Chapter 11: Self-Balancing Search Trees

  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 Chapter 11: Self-Balancing Search Trees

  13. Implementing an AVL Tree Chapter 11: Self-Balancing Search Trees

  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 Chapter 11: Self-Balancing Search Trees

  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 Chapter 11: Self-Balancing Search Trees

  16. Insertion into a Red-Black Tree (continued) Chapter 11: Self-Balancing Search Trees

  17. Implementation of a Red-Black Tree Class Chapter 11: Self-Balancing Search Trees

  18. Algorithm for Red-Black Tree Insertion Chapter 11: Self-Balancing Search Trees

  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 Chapter 11: Self-Balancing Search Trees

  20. Searching a 2-3 Tree Chapter 11: Self-Balancing Search Trees

  21. Searching a 2-3 Tree (continued) Chapter 11: Self-Balancing Search Trees

  22. Inserting into a 2-3 Tree Chapter 11: Self-Balancing Search Trees

  23. Algorithm for Insertion into a 2-3 Tree Chapter 11: Self-Balancing Search Trees

  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 Chapter 11: Self-Balancing Search Trees

  25. Removal from a 2-3 Tree (continued) Chapter 11: Self-Balancing Search Trees

  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 Chapter 11: Self-Balancing Search Trees

  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 Chapter 11: Self-Balancing Search Trees

  28. Algorithm for Insertion into a 2-3-4 Tree Chapter 11: Self-Balancing Search Trees

  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 Chapter 11: Self-Balancing Search Trees

  30. Relating 2-3-4 Trees to Red-Black Trees (continued) Chapter 11: Self-Balancing Search Trees

  31. Relating 2-3-4 Trees to Red-Black Trees (continued) Chapter 11: Self-Balancing Search Trees

  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 Chapter 11: Self-Balancing Search Trees

  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 Chapter 11: Self-Balancing Search Trees

  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 Chapter 11: Self-Balancing Search Trees

More Related