self-balancing search trees chapter 11. chapter 11: self-balancing search trees2 chapter objectives...

34
Self-Balancing Search Trees Chapter 11

Post on 21-Dec-2015

218 views

Category:

Documents


2 download

TRANSCRIPT

Self-Balancing Search Trees

Chapter 11

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