Red Black Trees CSC 172 SPRING 2004 LECTURE 18 Reading for next workshop  Weiss 19.5  Learn this stuff  On Quiz #4 & final you will be expected to.

Slides:



Advertisements
Similar presentations
Definitions and Bottom-Up Insertion
Advertisements

Binary Search Trees Data Structures & Problem Solving Using JAVA Second Edition Mark Allen Weiss Chapter 19 (continued) © 2002 Addison Wesley.
Topic 23 Red Black Trees "People in every direction No words exchanged No time to exchange And all the little ants are marching Red and black antennas.
IKI 10100: Data Structures & Algorithms Ruli Manurung (acknowledgments to Denny & Ade Azurat) 1 Fasilkom UI Ruli Manurung (Fasilkom UI)IKI10100: Lecture.
CSC 213 – Large Scale Programming. Red-Black Tree Properties black  Root Property: Root node painted black black  External Property: Leaves are painted.
CMPT 225 Red–black trees. Red-black Tree Structure A red-black tree is a BST! Each node in a red-black tree has an extra color field which is red or black.
Quiz3! Midterm! Assignment2! (most) Quiz4! Today’s special: 4 for 1.
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.
CSC 213 Lecture 9: Red-Black Trees. Announcements Reminder: Daily Quizzes should take 15 minutes Goal is to provide chance to see if you really understand.
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 /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:
1 Red-Black Trees. 2 Black-Height of the tree = 4.
1 Red-Black Trees. 2 Black-Height of the tree = 4.
1 COSC 2P03 Lecture #5 – Trees Part III, Heaps. 2 Today Take up the quiz Assignment Questions Red-Black Trees Binary Heaps Heap sort D-Heaps, Leftist.
Dynamic Set AVL, RB Trees G.Kamberova, Algorithms Dynamic Set ADT Balanced Trees Gerda Kamberova Department of Computer Science Hofstra University.
CS2420: Lecture 31 Vladimir Kulyukin Computer Science Department Utah State University.
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.
David Luebke 1 7/2/2015 ITCS 6114 Red-Black Trees.
Advanced Trees Part III Briana B. Morrison Adapted from Alan Eugenio & William J. Collins.
Red Black Trees CSC 172 SPRING 2002 LECTURE 18 Red Black Tree BST with a coloring convention for each element Nodes are colored according to rules One.
1 Red-Black Trees. 2 Definition: A red-black tree is a binary search tree where: –Every node is either red or black. –Each NULL pointer is considered.
Red-Black Trees Lecture 10 Nawazish Naveed. Red-Black Trees (Intro) BSTs perform dynamic set operations such as SEARCH, INSERT, DELETE etc in O(h) time.
Course: Programming II - Abstract Data Types Red-Black TreesSlide Number 1 Balanced Search Trees Binary Search Tree data structures can allow insertion,
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.
Red-Black Trees Red-black trees: –Binary search trees augmented with node color –Operations designed to guarantee that the height h = O(lg n)
Mudasser Naseer 1 10/20/2015 CSC 201: Design and Analysis of Algorithms Lecture # 11 Red-Black Trees.
© 2004 Goodrich, Tamassia Red-Black Trees v z.
Red Black Tree Smt Genap Outline Red-Black Trees ◦ Motivation ◦ Definition ◦ Operation Smt Genap
CS-2851 Dr. Mark L. Hornick 1 Okasaki’s Insertion Method for Red/Black balancing A step-by-step procedure for maintaining balance through application of.
CSIT 402 Data Structures II
Min Chen School of Computer Science and Engineering Seoul National University Data Structure: Chapter 8.
Lecture 2 Red-Black Trees. 8/3/2007 UMBC CSMC 341 Red-Black-Trees-1 2 Red-Black Trees Definition: A red-black tree is a binary search tree in which: 
1 Data Structures and Algorithms Searching Red-Black and Other Dynamically BalancedTrees.
CSC 213 – Large Scale Programming Lecture 21: Red-Black Trees.
CS 367 Introduction to Data Structures Lecture 9.
Red-Black Trees Definitions and Bottom-Up Insertion.
Red Black Trees Top-Down Deletion. Recall the rules for BST deletion 1.If vertex to be deleted is a leaf, just delete it. 2.If vertex to be deleted has.
Binary Search Trees Data Structures & Problem Solving Using JAVA Second Edition Mark Allen Weiss Chapter 19 © 2002 Addison Wesley.
Red-Black Tree Insertion Start with binary search insertion, coloring the new node red NIL l Insert 18 NIL l NIL l 1315 NIL l
1 Binary Search Trees  Average case and worst case Big O for –insertion –deletion –access  Balance is important. Unbalanced trees give worse than log.
Red-Black Trees Bottom-Up Deletion. Recall “ordinary” BST Delete 1.If vertex to be deleted is a leaf, just delete it. 2.If vertex to be deleted has just.
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.
Data Structures and Algorithms (AT70.02) Comp. Sc. and Inf. Mgmt. Asian Institute of Technology Instructor: Prof. Sumanta Guha Slide Sources: CLRS “Intro.
1 Red-Black Trees. 2 A Red-Black Tree with NULLs shown Black-Height of the tree = 4.
Lecture 23 Red Black Tree Chapter 10 of textbook
Definitions and Bottom-Up Insertion
AA Trees.
File Organization and Processing Week 3
Red Black Trees
Red-Black Trees.
Red-Black Trees Bottom-Up Deletion.
Red-Black Trees Bottom-Up Deletion.
Slide Sources: CLRS “Intro. To Algorithms” book website
Red Black Trees.
Red-Black Trees Bottom-Up Deletion.
TCSS 342, Winter 2006 Lecture Notes
Slide Sources: CLRS “Intro. To Algorithms” book website
Red-Black Trees v z Red-Black Trees 1 Red-Black Trees
Red-Black Trees Bottom-Up Deletion.
Topic 23 Red Black Trees "People in every direction No words exchanged No time to exchange And all the little ants are marching Red and Black.
Red-Black Trees.
Red Black Trees Top-Down Deletion.
Red-Black Trees Bottom-Up Deletion.
Red-Black Trees.
Red-Black Trees Bottom-Up Deletion.
Red-black tree properties
Red Black Trees Top-Down Deletion.
Presentation transcript:

Red Black Trees CSC 172 SPRING 2004 LECTURE 18

Reading for next workshop  Weiss 19.5  Learn this stuff  On Quiz #4 & final you will be expected to generate BS, AVL, and R-B trees from some sequence of inserts & deletes

RED-BLACK TREES  Red-Black Trees are BSTs  Red-Black Trees maintain balance  Red-Black Trees are an alternative to AVL trees  Not as “bushy”  Easier to implement  Single top down pass can be used during insertion & deletion  Tend to be faster performance wise  JAVA’s TreeSet class uses Red-Black Trees

Red Black Tree BST with a coloring convention for each element Every node is either red or black Root is black Nodes are colored according to rules One rule involves paths Specifically, paths from nodes with no children or one child (nodes with nulls)

Two Rules Red Rule If an element is red, all of it’s children are black Path Rule The number of black elements must be the same in all paths from the root element to element with no children or with one child

Maintaining Balance  New items must be colored red  If an insertion results in a rule violation, we need to fix the tree  Rotation  Re-color

Example {10,85,15,70,20,60,30,50,65,80,90,40,5,55}

Figure If S is black, a single rotation between parent and grandparent, with appropriate color changes, restores property 3 if X is an outside grandchild. Data Structures & Problem Solving using JAVA/2E Mark Allen Weiss © 2002 Addison Wesley

Figure If S is black, a double rotation involving X, the parent, and the grandparent, with appropriate color changes, restores property 3 if X is an inside grandchild. Data Structures & Problem Solving using JAVA/2E Mark Allen Weiss © 2002 Addison Wesley

Figure If S is red, a single rotation between parent and grandparent, with appropriate color changes, restores property 3 between X and P. Data Structures & Problem Solving using JAVA/2E Mark Allen Weiss © 2002 Addison Wesley

Figure Color flip: Only if X’s parent is red do we continue with a rotation. Data Structures & Problem Solving using JAVA/2E Mark Allen Weiss © 2002 Addison Wesley

Figure A color flip at 50 induces a violation; because the violation is outside, a single rotation fixes it. Data Structures & Problem Solving using JAVA/2E Mark Allen Weiss © 2002 Addison Wesley

Figure Result of single rotation that fixes the violation at node 50 Data Structures & Problem Solving using JAVA/2E Mark Allen Weiss © 2002 Addison Wesley

Figure Insertion of 45 as a red node Data Structures & Problem Solving using JAVA/2E Mark Allen Weiss © 2002 Addison Wesley

Figure X has two black children, and both of its sibling’s children are black; do a color flip. Data Structures & Problem Solving using JAVA/2E Mark Allen Weiss © 2002 Addison Wesley

Figure X has two black children, and the outer child of its sibling is red; do a single rotation. Data Structures & Problem Solving using JAVA/2E Mark Allen Weiss © 2002 Addison Wesley

Figure X has two black children, and the inner child of its sibling is red; do a double rotation. Data Structures & Problem Solving using JAVA/2E Mark Allen Weiss © 2002 Addison Wesley

Figure X is black, and at least one child is red; if we fall through to the next level and land on a red child, fine; if not, we rotate a sibling and parent. Data Structures & Problem Solving using JAVA/2E Mark Allen Weiss © 2002 Addison Wesley

Height of a Red-Black Tree Claim: Let y be the root of a subtree of a red-black tree. The number of black elements is the same in a path from y to any one of its descendants with no child or one child.

General case x y z1z1 z2z2 b1b1 b2b2 b0b0 In general, b 0 +b 1 =b 0 +b 2 So, b 1 =b 2 We define blackHeight(z) = bh(z) = The number of black elements in any path from z to any descendant with 0 or 1 child

Height of a red-black tree For any nonempty subtree of a red-black tree

Basis height(t) = 0 n(t) = 0 if the root is red n(t) = 1 if the root is black Either way 1 >= 2 bh(root(t)) - 1

Induction case 1 Let k be any nonnegative integer BTIH n(t) >= 2 bh(root(t)) - 1 for height(t) <= k If the root of t has one child, we must have bh(root) = 1

Induction case 2 The root of t has two children, (v 1,v 2 ) If the root is red bh(root) = bh(v 1 ) = bh(v 2 ) If the root is black bh(root) = bh(v 1 ) + 1 = bh(v 2 ) + 1 Either way bh(v1) >= bh(root(t)) – 1 bh(v2) >= bh(root(t)) – 1

Induction case 2 BTIH: n(leftTree(t)) >= 2 bh(v1) – 1 n(rightTree(t)) >= 2 bh(v2) – 1 The number of elements in t is one more than the number of elements in leftTree(t) + rightTree(t)

Ergo

Finally For any red-black tree with n elements height(t) is O(log n) By the red rule, at most half of the elements in a path from the root to the farthest leaf can be red. So, at least half those elements must be black bh(root(t)) >= height(t)/2 n(t) >= 2 bh(root(t)) – 1 n(t) >= 2 height(t)/2 – 1 So, height(t) <= 2 log 2 (n(t)+1)

AVL vs RB AVL : height < 1.75 log 2 (n) Red-Black height <= 2 log 2 (n+1) So, AVLs are “bushier” that red-black. However, maintaining a red-black is simpler Which is why Java’s TreeSet class uses red-black

Helpers private static final boolean RED = false; private static final boolean BLACK= true; private static boolean colorOf(Entry p) { return (p==null?BLACK:p.color); } private static void setColor(Entry p,boolean c) { if(p!=null) p.color – c; } private static Entry parentOf(Entry p) { return (p==null?null:p.parent); }

Insertions on red-black trees Suppose we insert Entry x We set x’s color to red Do we need to recolor & rotate? If x is root, “no” If x’s parent is BLACK, “no” So, loop while(x!= root && x.parent.color == RED)

Insertions on red-black trees FixAfterInsertion 1. Let t be (ref) the parent of the new insertion 2. Create a new Entry object pointer to by t.left or t.right 3. Set new Entry’s fields 4. Recolor and restructure 5. Set the root to BLACK

Aunt’s & Uncles Because of rotation we need to consider the color of the sibling of x’s parent. When x is parent’s left child: y = x.parent.parent.right; // could be null

Case 1:colorOf(y) == RED x y setColor(parentOf(x),BLACK); setColor(y,BLACK); setColor(parentOf(parentOf(x)),RED) x=parentOf(x); //keep looping x

Case 2:colorOf(y) = BLACK && x is RC x=parentOf(x); rotateLeft(x); x x Y is null

Case 3:colorOf(y) = BLACK && x is LC setColor(parentOf(x),BLACK); setColor(parentOf(parentOf(x)),RED); if(parentOf(parentOf(x) )!= null) rotateRight(parentOf(parentOf(x)); x Y is null x