course: programming ii - abstract data types red-black treesslide number 1 balanced search trees...
TRANSCRIPT
Course: Programming II - Abstract Data Types
Red-Black Trees Slide Number 1
Balanced Search TreesBinary Search Tree data structures can allow insertion, deletion and search operations of the order O(log n) (if balanced).
Binary balanced search-trees AVL treesRed-black treesSplay trees.
General balanced search-trees 2-3 trees, 2-3-4 trees and B-trees
Balanced search-tree data structures are trees that guarantee insertion, deletion and search operations of the order O(log n) bymaintaining a balanced tree.
Course: Programming II - Abstract Data Types
Red-Black Trees
Slide Number 2Red-Black Trees
Definition
A Red-Black Tree is a Binary Search Tree where nodes have a color (Red or Black) and that satisfies the following properties
Red-Black properties Every node is either Red or Black. The root node is Black If a node is Red, then all of its children are Black Every simple path from a given node x to any of its
descendant leaves contains the same number of black nodes.(black-height(x)).
No consecutive red nodes in a path.
Course: Programming II - Abstract Data Types
Examples
Slide Number 3Red-Black Trees
Every node is either red or black
The root node is black
Red nodes have black parents
Every simple path from a given node x to its descendant leaf has the samenumber of black nodesblack-height(x). bh=0
bh=1
bh=1
bh=2bh=1
bh=2 red-black tree
Not red-black trees
Course: Programming II - Abstract Data Types
Height of a Red-Black Tree
Slide Number 4Red-Black Trees
Theorem 1: A red-black tree with n elements has height h ≤ 2 log(n +1)
Intuition:Merge red nodes into their black parents
Course: Programming II - Abstract Data Types
Height of a Red-Black Tree
Slide Number 5Red-Black Trees
Theorem 1: A red-black tree with n elements has height h ≤ 2 log(n +1)
Intuition:Merge red nodes into their black parents
h’
Course: Programming II - Abstract Data Types
Height of a Red-Black Tree
Slide Number 6Red-Black Trees
Theorem 1: A red-black tree with n elements has height h ≤ 2 log(n +1)
Number of null leaves in each tree is n+1
h’
h Number of null leaves in a
2-3-4 tree is at least 2h’
2h’ ≤ n+1 h’ ≤ log(n+1)⇒
Also h ≤ 2 h’
h ≤ 2 log(n +1)
Course: Programming II - Abstract Data Types
Interface for Red-Black trees
Slide Number 7
public interface RBT<K extends Comparable<? super K>,V>{
public boolean contains(K searchKey);//Post: Searches for an element with key equal to searchKey in the tree. //Post: Returns false if no element is found.
public V retrieve(K searchKey);//Post: Retrieves an element with key equal to searchKey from the tree. Returns either the value of //Post: the element if found, or null if no element with given searchKey exists.
public void insert(K key, V newValue);//Post: Adds a new element to the tree with given key and newValue, preserving the properties of //Post: the red-black tree. If the tree includes already an element with the given key, it replaces its //Post: value with newValue.
public void delete(K searchKey) throws TreeException;//Post: Removes an element with key equal to searchKey from the tree, preserving the properties of//Post: the red-black tree. Throws an exception if such element is not found.
}
Red-Black Trees
Course: Programming II - Abstract Data Types
Data Structure for Red-Black Trees
Slide Number 8Red-Black Trees
Course: Programming II - Abstract Data Types
Rotation revisited
Slide Number 9Red-Black Trees
Rotate right (B)
rotateRight( ){// Rotates the current object to the right and returns its new parent get leftChild of B;
set T2 to be the left subtree of B;reparent the old leftChild of B;set B to be the right child of the old leftChild of B
}
Course: Programming II - Abstract Data Types
Rotation revisited
Slide Number 10Red-Black Trees
Rotate left (A)
rotateLeft( ){// Rotates the current object to the right and returns its new parent get rightChild of A;
set T2 to be the right subtree of A;reparent the old rightChild of A;set A to be the left child of the old rightChild of B
}
Course: Programming II - Abstract Data Types
Insertion
Slide Number 11Red-Black Trees
insert new node as per insert operation in binary search tree color the new node red (to preserve property 4)
• if new node is root node, repaint it black (Case 1)• if parent is black, property 3 is satisfied (Case 2)• if parent is red, property 3 is violated
The operation performs the following steps:
Double red problem Recoloring Restructuring the links of the
tree by rotation
Three more casesThree more cases
Course: Programming II - Abstract Data Types
Insertion (continue..)
Slide Number 12
Resolving double-red problem
Parent node is Red, and Uncle node is Red
Case 3:
Recolor grandparent RedRecolor parent BlackRecolor uncle BlackCheck cases again for grandparent
Red-Black Trees
Course: Programming II - Abstract Data Types
Insertion (continue..)
Slide Number 13
Rotate right (parent node)Current node is old parentCase 5 on current node
Red-Black Trees
Resolving double-red problem
Parent node is Red, and Uncle node is Black (or null) Parent is right child of grandparent, and Current node is left child of parent
Case 4:
4b
Course: Programming II - Abstract Data Types
Insertion (continue..)
Slide Number 14Red-Black Trees
Parent becomes BlackGrandparent becomes RedRotate left (grandparent node)
Resolving double-red problem
Parent node is Red, and Uncle node is Black (or null) Parent is right child of grandparent, and Current node is right child of parent
Case 5:
5a
Course: Programming II - Abstract Data Types
Summary of Cases
Slide Number 15
Case 2
DONE
Case 3Recolor
go to Case 1with current = G+
Red-Black Trees
Case 1Recolor node. DONE
Course: Programming II - Abstract Data Types
Slide Number 16
Case 4a
Rotatesleft parent
go to Case 5with current = P+
Case 4b
Rotates right P go to Case 5
with current = P+
Summary of Cases
Red-Black Trees
Course: Programming II - Abstract Data Types
Slide Number 17
Case 5aRecolor P and G,
rotate right G
DONE
Summary of Cases
Case 5b Recolor P and G,rotate left G
DONE
Red-Black Trees
Course: Programming II - Abstract Data Types
Slide Number 18
Implementing RedBlackTree
Red-Black Trees
public class RedBlackTree<K extends Comparable<K>, V> implements RBT<K,V>{
private RBTNode<K,V> root;
public RedBlackTree() { this.root = null;}
public V retrieve(K key){ RBTNode<K,V> node = retrieveElem(root, key).getValue();
if (node == null){throw new NoSuchElementException();} return node.getValue();
}
public void insert(K key, V newValue){ << next slide>>
}
}
Course: Programming II - Abstract Data Types
Slide Number 19
Implementing Insert
Red-Black Trees
public void insert(K key, V newValue){
Tuple<RBTNode<K,V>, RBTNode<K,V>> pair = findNode(key);RBTNode<K,V> parent = pair.getX();RBTNode<K,V> current = pair.getY();
if (current != null) { Set the value of current to be newValue; }
else if (parent == null){ Set the root to the be new RBTNode; Set the color of the root to BLACK; } else {
Create a new RBTNode with color RED; if (key < parent.getKey())
Set the newRBTNode to be the left child of parent;else Set the newRBTNode to be the right child of parent;
insertCaseOne(newRBTNode); }
}
Key already existsKey already exists
The tree is empty, create root node
The tree is empty, create root node
Check properties of RedBlack Tree
Check properties of RedBlack Tree
Course: Programming II - Abstract Data Types
Analysis
Red-Black Trees Slide Number 20
AVL trees and Red-Black trees are data structure that guarantee insertion, deletion and search operations to be of the order O(log n).
How do AVL trees and Red-Black trees compare?
The height of an AVL tree is also logarithmic in n.
An AVL tree can be colored to become a Red-Black tree,
A Red-Black tree cannot be seen as an AVL tree:o Red-black trees can have larger heights than AVL treeso AVL trees are more rigidly balanced than Red-Black trees
Red-Black tree have slightly faster insertions and deletion than AVL trees (TreeMap in Java uses Red-Black trees).