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

Slides:



Advertisements
Similar presentations
Comp 122, Spring 2004 Binary Search Trees. btrees - 2 Comp 122, Spring 2004 Binary Trees  Recursive definition 1.An empty tree is a binary tree 2.A node.
Advertisements

IKI 10100: Data Structures & Algorithms Ruli Manurung (acknowledgments to Denny & Ade Azurat) 1 Fasilkom UI Ruli Manurung (Fasilkom UI)IKI10100: Lecture.
AVL Trees CS II – Fall /8/2010. Announcements HW#2 is posted – Uses AVL Trees, so you have to implement an AVL Tree class. Most of the code is provided.
AA Trees another alternative to AVL trees. Balanced Binary Search Trees A Binary Search Tree (BST) of N nodes is balanced if height is in O(log N) A balanced.
Balanced Search Trees. 2-3 Trees Trees Red-Black Trees AVL Trees.
November 5, Algorithms and Data Structures Lecture VIII Simonas Šaltenis Nykredit Center for Database Research Aalborg University
ITEC200 Week 11 Self-Balancing Search Trees. 2 Learning Objectives Week 11 (ch 11) To understand the impact that balance has on.
Advanced Tree Data Structures Nelson Padua-Perez Chau-Wen Tseng Department of Computer Science University of Maryland, College Park.
1 Balanced Search Trees  several varieties  AVL trees  trees  Red-Black trees  B-Trees (used for searching secondary memory)  nodes are added.
Self-Balancing Search Trees
Chapter 6: Transform and Conquer Trees, Red-Black Trees The Design and Analysis of Algorithms.
1 /26 Red-black tree properties Every node in a red-black tree is either black or red Every null leaf is black No path from a leaf to a root can have two.
1 Binary Search Trees Implementing Balancing Operations –AVL Trees –Red/Black Trees Reading:
Trees and Red-Black Trees Gordon College Prof. Brinton.
Self-Balancing Search Trees Chapter 11. Chapter 11: Self-Balancing Search Trees2 Chapter Objectives To understand the impact that balance has on the performance.
Advanced Tree Data Structures Fawzi Emad Chau-Wen Tseng Department of Computer Science University of Maryland, College Park.
Fall 2007CS 2251 Self-Balancing Search Trees Chapter 9.
Chapter 13 Binary Search Trees. Copyright © 2005 Pearson Addison-Wesley. All rights reserved Chapter Objectives Define a binary search tree abstract.
CSC 212 Lecture 19: Splay Trees, (2,4) Trees, and Red-Black Trees.
Balanced Trees. Binary Search tree with a balance condition Why? For every node in the tree, the height of its left and right subtrees must differ by.
Advanced Trees Part III Briana B. Morrison Adapted from Alan Eugenio & William J. Collins.
Binary Search Trees CSE 331 Section 2 James Daly.
Balanced Search Trees Chapter 27 Copyright ©2012 by Pearson Education, Inc. All rights reserved.
Balanced Search Trees Chapter Chapter Contents AVL Trees Single Rotations Double Rotations Implementation Details 2-3 Trees Searching Adding Entries.
AVL Trees Neil Ghani University of Strathclyde. General Trees Recall a tree is * A leaf storing an integer * A node storing a left subtree, an integer.
Balanced Trees AVL Trees Red-Black Trees 2-3 Trees Trees.
SELF-BALANCING SEARCH TREES Chapter 9. Self-Balancing Search Trees  The performance of a binary search tree is proportional to the height of the tree.
Analysis of Red-Black Tree Because of the rules of the Red-Black tree, its height is at most 2log(N + 1). Meaning that it is a balanced tree Time Analysis:
Balancing Binary Search Trees. Balanced Binary Search Trees A BST is perfectly balanced if, for every node, the difference between the number of nodes.
Balanced Trees (AVL and RedBlack). Binary Search Trees Optimal Behavior ▫ O(log 2 N) – perfectly balanced tree (e.g. complete tree with all levels filled)
© 2004 Goodrich, Tamassia Red-Black Trees v z.
Red Black Tree Smt Genap Outline Red-Black Trees ◦ Motivation ◦ Definition ◦ Operation Smt Genap
Beyond (2,4) Trees What do we know about (2,4)Trees? Balanced
Min Chen School of Computer Science and Engineering Seoul National University Data Structure: Chapter 8.
Chapter 13 B Advanced Implementations of Tables – Balanced BSTs.
Data Structures Balanced Trees 1CSCI Outline  Balanced Search Trees 2-3 Trees Trees Red-Black Trees 2CSCI 3110.
1 Balanced Trees There are several ways to define balance Examples: –Force the subtrees of each node to have almost equal heights –Place upper and lower.
Nyhoff, ADTs, Data Structures and Problem Solving with C++, Second Edition, © 2005 Pearson Education, Inc. All rights reserved Trees Chapter.
2-3 Trees, Trees Red-Black Trees
2-3 Tree. Slide 2 Outline  Balanced Search Trees 2-3 Trees Trees.
Starting at Binary Trees
Chapter 13 A Advanced Implementations of Tables. © 2004 Pearson Addison-Wesley. All rights reserved 13 A-2 Balanced Search Trees The efficiency of the.
Fall 2006 CSC311: Data Structures 1 Chapter 10: Search Trees Objectives: Binary Search Trees: Search, update, and implementation AVL Trees: Properties.
Lecture 11COMPSCI.220.FS.T Balancing an AVLTree Two mirror-symmetric pairs of cases to rebalance the tree if after the insertion of a new key to.
Chapter 7 Trees_Part3 1 SEARCH TREE. Search Trees 2  Two standard search trees:  Binary Search Trees (non-balanced) All items in left sub-tree are less.
3.1. Binary Search Trees   . Ordered Dictionaries Keys are assumed to come from a total order. Old operations: insert, delete, find, …
Chapter 19: Binary Search Trees or How I Learned to Love AVL Trees and Balance The Tree Group 6: Tim Munn.
1 Chapter 7 Objectives Upon completion you will be able to: Create and implement binary search trees Understand the operation of the binary search tree.
Binary Search Trees (BSTs) 18 February Binary Search Tree (BST) An important special kind of binary tree is the BST Each node stores some information.
Balanced Search Trees Chapter 19 Data Structures and Problem Solving with C++: Walls and Mirrors, Carrano and Henry, © 2013.
CIS 068 Welcome to CIS 068 ! Lesson 12: Data Structures 3 Trees.
CSE373: Data Structures & Algorithms Lecture 7: AVL Trees Linda Shapiro Winter 2015.
Copyright © 2005 Pearson Addison-Wesley. All rights reserved Balancing Binary Trees There are many approaches to balancing binary trees One method.
Keeping Binary Trees Sorted. Search trees Searching a binary tree is easy; it’s just a preorder traversal public BinaryTree findNode(BinaryTree node,
Red-Black Trees an alternative to AVL trees. Balanced Binary Search Trees A Binary Search Tree (BST) of N nodes is balanced if height is in O(log N) A.
Balanced Search Trees 2-3 Trees AVL Trees Red-Black Trees
AA Trees.
File Organization and Processing Week 3
Red Black Trees
Balanced Trees (AVL and RedBlack)
Red-Black Trees v z Red-Black Trees 1 Red-Black Trees
Monday, April 16, 2018 Announcements… For Today…
TCSS 342, Winter 2006 Lecture Notes
Self-Balancing Search Trees
Wednesday, April 18, 2018 Announcements… For Today…
Red-Black Trees v z Red-Black Trees 1 Red-Black Trees
Algorithms and Data Structures Lecture VIII
Self-Balancing Search Trees
(2,4) Trees /6/ :26 AM (2,4) Trees (2,4) Trees
Self-Balancing Search Trees
Presentation transcript:

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  To learn about the Red-Black tree for storing and maintaining a binary search tree in balance  To learn about 2-3 trees, 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, 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

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

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

Rotation (continued)

Implementing Rotation

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

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

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

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

Implementing an AVL Tree

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

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

Insertion into a Red-Black Tree (continued)

Implementation of a Red-Black Tree Class

Algorithm for Red-Black Tree Insertion

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

Searching a 2-3 Tree

Searching a 2-3 Tree (continued)

Inserting into a 2-3 Tree

Algorithm for Insertion into a 2-3 Tree

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

Removal from a 2-3 Tree (continued)

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  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 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  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 tree in a binary-tree format

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

Algorithm for Insertion into a Tree

Relating Trees to Red-Black Trees  A Red-Black tree is a binary-tree equivalent of a 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 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

Relating Trees to Red-Black Trees (continued)

B-Trees  A B-tree extends the idea behind the 2-3 and 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 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 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

Chapter Review (continued)  Trees whose nodes have more than two children are an alternative to balanced binary search trees  A 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 tree  Trees whose nodes have more than two children are an alternative to balanced binary search trees  A 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 tree