Outline. Definition. 2 Height-Balance. 3 Searches. 4 Rotations. 5 Insertion. 6 Deletions. 7 Reference. 1 Every node is either red or black.

Similar documents
Properties of red-black trees

Balanced search trees

Algorithms. Red-Black Trees

ADVANCED DATA STRUCTURES

B Tree. Also, every non leaf node must have at least two successors and all leaf nodes must be at the same level.

Analysis of Algorithms

13.4 Deletion in red-black trees

Multi-Way Search Trees

Algorithms. Deleting from Red-Black Trees B-Trees

A red-black tree is a balanced binary search tree with the following properties:

Outline. Computer Science 331. Heap Shape. Binary Heaps. Heap Sort. Insertion Deletion. Mike Jacobson. HeapSort Priority Queues.

13.4 Deletion in red-black trees

Outline. Binary Tree

Search Trees. Undirected graph Directed graph Tree Binary search tree

Red-Black Trees. Based on materials by Dennis Frey, Yun Peng, Jian Chen, and Daniel Hood

Lecture 6: Analysis of Algorithms (CS )

We will show that the height of a RB tree on n vertices is approximately 2*log n. In class I presented a simple structural proof of this claim:

CS350: Data Structures Red-Black Trees

Multi-Way Search Trees

We assume uniform hashing (UH):

Outline. Computer Science 331. Insertion: An Example. A Recursive Insertion Algorithm. Binary Search Trees Insertion and Deletion.

Outline. Introduction. 2 Proof of Correctness. 3 Final Notes. Precondition P 1 : Inputs include

Define the red- black tree properties Describe and implement rotations Implement red- black tree insertion

Binary Heaps in Dynamic Arrays

Trees. Chapter 6. strings. 3 Both position and Enumerator are similar in concept to C++ iterators, although the details are quite different.

Search Trees - 2. Venkatanatha Sarma Y. Lecture delivered by: Assistant Professor MSRSAS-Bangalore. M.S Ramaiah School of Advanced Studies - Bangalore

CS60020: Foundations of Algorithm Design and Machine Learning. Sourangshu Bhattacharya

CS60020: Foundations of Algorithm Design and Machine Learning. Sourangshu Bhattacharya

CS 380 ALGORITHM DESIGN AND ANALYSIS

Trees. (Trees) Data Structures and Programming Spring / 28

Data Structures and Algorithms CMPSC 465

CS 3343 Fall 2007 Red-black trees Carola Wenk

Lecture: Analysis of Algorithms (CS )

COMP Analysis of Algorithms & Data Structures

Red-black tree. Background and terminology. Uses and advantages

Algorithms. AVL Tree

Outline. Computer Science 331. Analysis of Prim's Algorithm

Advanced Algorithms. Class Notes for Thursday, September 18, 2014 Bernard Moret

Binary search trees. Binary search trees are data structures based on binary trees that support operations on dynamic sets.

ECE 242 Data Structures and Algorithms. Trees IV. Lecture 21. Prof.

CMPS 2200 Fall 2017 Red-black trees Carola Wenk

/633 Introduction to Algorithms Lecturer: Michael Dinitz Topic: Priority Queues / Heaps Date: 9/27/17

CMPS 2200 Fall 2015 Red-black trees Carola Wenk

Balanced search trees. DS 2017/2018

CSCI2100B Data Structures Trees

COMP Analysis of Algorithms & Data Structures

9/29/2016. Chapter 4 Trees. Introduction. Terminology. Terminology. Terminology. Terminology

Module 4: Index Structures Lecture 13: Index structure. The Lecture Contains: Index structure. Binary search tree (BST) B-tree. B+-tree.

Introduction. for large input, even access time may be prohibitive we need data structures that exhibit times closer to O(log N) binary search tree

Trees. Eric McCreath

B + -trees. Kerttu Pollari-Malmi

CMPT 225. Red black trees

Binary search trees 3. Binary search trees. Binary search trees 2. Reading: Cormen et al, Sections 12.1 to 12.3

Section Summary. Introduction to Trees Rooted Trees Trees as Models Properties of Trees

Chapter 12 Advanced Data Structures

Discrete mathematics

Quiz 1 Solutions. (a) f(n) = n g(n) = log n Circle all that apply: f = O(g) f = Θ(g) f = Ω(g)

COMP251: Red-black trees

Lecture 5. Treaps Find, insert, delete, split, and join in treaps Randomized search trees Randomized search tree time costs

CISC 235: Topic 4. Balanced Binary Search Trees

Priority Queues. 1 Introduction. 2 Naïve Implementations. CSci 335 Software Design and Analysis III Chapter 6 Priority Queues. Prof.

Chapter 4: Trees. 4.2 For node B :

Red-Black-Trees and Heaps in Timestamp-Adjusting Sweepline Based Algorithms

Search Trees. Chapter 11

CS Fall 2010 B-trees Carola Wenk

Balanced Trees Part Two

Lecture 11: Multiway and (2,4) Trees. Courtesy to Goodrich, Tamassia and Olga Veksler

Lecture 21: Red-Black Trees

Red-Black Trees. 2/24/2006 Red-Black Trees 1

(2,4) Trees. 2/22/2006 (2,4) Trees 1

Data Structures and Algorithms

CIS265/ Trees Red-Black Trees. Some of the following material is from:

Computational Optimization ISE 407. Lecture 16. Dr. Ted Ralphs

CS2 Algorithms and Data Structures Note 6

Outline. Computer Science 331. Definitions: Paths and Their Costs. Computation of Minimum Cost Paths

Red-black trees (19.5), B-trees (19.8), trees

CS2 Algorithms and Data Structures Note 6

Chapter 22 Splay Trees

OPPA European Social Fund Prague & EU: We invest in your future.

An AVL tree with N nodes is an excellent data. The Big-Oh analysis shows that most operations finish within O(log N) time

Chapter 13. Michelle Bodnar, Andrew Lohr. April 12, 2016

CS 234. Module 8. November 15, CS 234 Module 8 ADT Priority Queue 1 / 22

Self-Balancing Search Trees. Chapter 11

Chapter 3. Graphs CLRS Slides by Kevin Wayne. Copyright 2005 Pearson-Addison Wesley. All rights reserved.

Multiway Search Trees. Multiway-Search Trees (cont d)

Advanced Set Representation Methods

CS 206 Introduction to Computer Science II

Solutions. Suppose we insert all elements of U into the table, and let n(b) be the number of elements of U that hash to bucket b. Then.

Operations on Heap Tree The major operations required to be performed on a heap tree are Insertion, Deletion, and Merging.

Multiway searching. In the worst case of searching a complete binary search tree, we can make log(n) page faults Everyone knows what a page fault is?

Laboratory Module X B TREES

Trees, Part 1: Unbalanced Trees

Jana Kosecka. Red-Black Trees Graph Algorithms. Many slides here are based on E. Demaine, D. Luebke slides

Outline. Computer Science 331. Three Classical Algorithms. The Sorting Problem. Classical Sorting Algorithms. Mike Jacobson. Description Analysis

Midterm solutions. n f 3 (n) = 3

III Data Structures. Dynamic sets

CSE 502 Class 16. Jeremy Buhler Steve Cole. March A while back, we introduced the idea of collections to put hash tables in context.

Algorithms in Systems Engineering ISE 172. Lecture 16. Dr. Ted Ralphs

12 July, Red-Black Trees. Red-Black Trees

CSE100. Advanced Data Structures. Lecture 8. (Based on Paul Kube course materials)

Transcription:

Outline 1 Definition Computer Science 331 Red-Black rees Mike Jacobson Department of Computer Science University of Calgary Lectures #20-22 2 Height-Balance 3 Searches 4 Rotations 5 s: Main Case 6 Partial Correctness ermination and Efficiency 7 Reference Mike Jacobson (University of Calgary) Computer Science 331 Lectures #20-22 1 / 68 Mike Jacobson (University of Calgary) Computer Science 331 Lectures #20-22 2 / 68 Definition Definition of a Red-Black ree Red-Black Properties Definition A red-black tree is a binary tree that can be used to implement the Dictionary AD (also SortedSet and SortedMap interfaces from the JCF) Internal Nodes are used to store elements of a dictionary. Leaves are called NIL nodes and do not store elements of the set. Every internal node has two children (either, or both, of which might be leaves). he smallest red-black tree has size one (single NIL node). If the leaves (NIL nodes) of a red-black tree are removed then the resulting tree is a binary search tree. A binary search tree is a red-black tree if it satisfies the following: 1 Every node is either red or black. 2 he root is black. 3 Every leaf (NIL) is black. 4 If a node is red, then both its children are black. 5 For each node, all paths from the node to descendant leaves contain the same number of black nodes. Why these are useful: height is in Θ(log n) in the worst case (tree with n internal nodes) worst case compleity of search, insert, delete are in Θ(log n) Mike Jacobson (University of Calgary) Computer Science 331 Lectures #20-22 3 / 68 Mike Jacobson (University of Calgary) Computer Science 331 Lectures #20-22 4 / 68

Definition Definition Eample Implementation Details 10 6 16 Eample: Figure 13.1 on page 310 of the Cormen, Leiserson, Rivest, and Stein book. 2 8 12 18 he color of a node can be represented by a Boolean value (eg, true=black, false=red), so that only one bit is needed to store the color of a node 1 4 15 20 o save space and simplify programming, a single sentinel can replace all NIL nodes. he parent of the root node is pointed to the sentinel as well. Black internal nodes are drawn as circles An empty tree contains one single NIL node (the sentinel) Red nodes are drawn as diamonds NIL nodes (leaves) are drawn as black squares Mike Jacobson (University of Calgary) Computer Science 331 Lectures #20-22 5 / 68 Mike Jacobson (University of Calgary) Computer Science 331 Lectures #20-22 6 / 68 Black-Height of a Node Height-Balance he Main heorem Height-Balance he black-height of a node, denoted bh(), is the number of black nodes on any path from, but not including, a node down to a leaf. Eample: In the previous red-black tree, he black-height of the node with label 2 is: 1 he black-height of the node with label 4 is: 1 he black-height of the node with label 6 is: 2 he black-height of the node with label 8 is: 1 he black-height of the node with label 10 is: 2 Note: Red-Black Property #5 implies that bh() is well-defined for each node. heorem 1 If is a red-black tree with n nodes then the height of is at most 2 log 2 (n + 1). Outline of proof: prove a lower bound on tree size in terms of black-height prove an upper bound on height in terms of black-height of the tree combine to prove main theorem Mike Jacobson (University of Calgary) Computer Science 331 Lectures #20-22 7 / 68 Mike Jacobson (University of Calgary) Computer Science 331 Lectures #20-22 8 / 68

Height-Balance Height-Balance Bounding Size Using Black-Height Base Case (h = 0) Lemma 2 For each node, the subtree with root includes at least 2 bh() 1 nodes. Method of Proof: mathematical induction on height of the subtree with root (using the strong form of mathematical induction) Base case: prove that the claim holds for subtrees of height 0 Inductive step: prove, for all h 0, that if the lemma is true for all subtrees with height at most h 1 then it also holds for all subtrees with height h. Suppose that the height h = 0 : is a leaf (just the NIL node sentinel) black-height bh() = 0 number of nodes n = 1 hus, it follows that n satisfies n 2 bh() 1 = 2 0 1 = 0 as required. Mike Jacobson (University of Calgary) Computer Science 331 Lectures #20-22 9 / 68 Mike Jacobson (University of Calgary) Computer Science 331 Lectures #20-22 10 / 68 Height-Balance Notation for Inductive Step Height-Balance Useful Properties Involving Size and Height b b L b R h h L h R n n L n R Black-height of Black-height of left child of Black-height of right child of Subtree with root Height of Height of left subtree of Height of right subtree of Size of Size of left subtree of Size of right subtree of n = n L + n R + 1. he n nodes of are: the n L nodes of the left subtree of the n R nodes of the right subtree of one more node the root of h = 1 + ma(h L, h R ), so h L h 1 and h R h 1 height of any tree (including ) is the maimum length of any path from the root to any leaf it follows by this definition that h = 1 + ma(h L, h R ) the remaining inequalities are now easily established Mike Jacobson (University of Calgary) Computer Science 331 Lectures #20-22 11 / 68 Mike Jacobson (University of Calgary) Computer Science 331 Lectures #20-22 12 / 68

Height-Balance Height-Balance Useful Property Involving Black-Height Inductive Step b L b 1 and b R b 1. Case 1: has color red both children of have color black (Red-Black Property #4) Red-Black Property #5 implies that b L = b R = b 1. Case 2: has color black. children of could each be either red or black b L b 1, because by the definition of black-height { b if the left child of is red b L = b 1 if the left child of is black. Let h be an integer such that h 0. Inductive Hypothesis: Suppose the claimed result holds for every node y such that the height of the tree with root y is less than h. Let be a node such that the height of the tree is h. Let n be the number of nodes of. Required to Show: n 2 bh() 1 holds for, assuming the inductive hypothesis. an analogous argument shows that b R b 1 Mike Jacobson (University of Calgary) Computer Science 331 Lectures #20-22 13 / 68 Mike Jacobson (University of Calgary) Computer Science 331 Lectures #20-22 14 / 68 Proof of Inductive Step Height-Balance Height-Balance Bounding Height Using Black-Height he inductive hypothesis implies that n L 2 b L 1 and n R 2 b R 1. because h L and h R are both h 1. hus, the number of internal nodes n satisfies n = n L + n R + 1 (2 b L 1) + (2 b R 1) + 1 (2 b 1 1) + (2 b 1 1) + 1 = 2(2 b 1 ) 1 = 2 b 1 Lemma 3 If is a red-black tree then bh(r) h/2 where r is the root of and h is the height of. Proof. Assume that has height h : by red-black Property 4, at least half the nodes on any simple path from the root to a leaf (not including the root) are black, height of is the length of the longest path from root to a leaf. Hence, bh(r) h/2. as required. Mike Jacobson (University of Calgary) Computer Science 331 Lectures #20-22 15 / 68 Mike Jacobson (University of Calgary) Computer Science 331 Lectures #20-22 16 / 68

Height-Balance Proof of the Main heorem Searches Searching in a Red-Black ree heorem 4 If is a red-black tree with n nodes then the height of is at most 2 log 2 (n + 1). Proof. Let r be the root of. he two Lemmas state that: Putting these together yields: n 2 bh(r) 1 and bh(r) h/2 n 2 h/2 1 log 2 (n + 1) h/2 h 2 log 2 (n + 1) Searching in a red-black tree is almost the same as searching in a binary search tree. Difference Between hese Operations: leaves are NIL nodes that do not store values thus, unsuccessful searches end when a leaf is reached instead of when a null reference is encountered Worst-Case ime to Search in a Red-Black ree: Θ(log n) as required. Mike Jacobson (University of Calgary) Computer Science 331 Lectures #20-22 17 / 68 Mike Jacobson (University of Calgary) Computer Science 331 Lectures #20-22 18 / 68 and Deletion? Rotations What is a Rotation? Rotations Unfortunately, insertions and deletions are more complicated because we need to preserve the Red-Black Properties. Main idea: use rotations to change subtree heights preserve binary search tree property Combination of rotations and other methods can be used to re-establish red-black tree properties after insertions and deletions Rotation: a local operation on a binary search tree preserves the binary search tree property used to implement operations on red-black trees (and other height-balanced trees) two types: Left Rotations Right Rotations Mike Jacobson (University of Calgary) Computer Science 331 Lectures #20-22 19 / 68 Mike Jacobson (University of Calgary) Computer Science 331 Lectures #20-22 20 / 68

Rotations Left Rotation: ree Before Rotation Rotations Useful Consequences of Binary Search ree Property ree Before Performing Left Rotation at : Lemma 5 For all,, and 3, < < < < Assumption: has a right child, 3 Proof. is a BS, so: : is the left subtree of (so < ) : is contained in the right subtree of (so < ) is the left subtree of (so < ) 3 : is the right subtree of (so < ) Mike Jacobson (University of Calgary) Computer Science 331 Lectures #20-22 21 / 68 Mike Jacobson (University of Calgary) Computer Science 331 Lectures #20-22 22 / 68 Rotations Left Rotation: ree After Rotation Rotations Right Rotation: ree Before Rotation ree Before Performing Right Rotation at : 3 3 Notice that this is still a BS (inequalities on previous slide still hold) Pseudocode: Introduction to Algorithms, page 313 Assumption: has a left child, Mike Jacobson (University of Calgary) Computer Science 331 Lectures #20-22 23 / 68 Mike Jacobson (University of Calgary) Computer Science 331 Lectures #20-22 24 / 68

Rotations Rotations Right Rotation: ree After Rotation Effects of a Rotation 3 Eercises: 1 Confirm that a tree is a BS after a rotation if it was one before. 2 Confirm that a (single left or right) rotation can be performed using Θ(1) operations including comparisons and assignments of pointers or references Note: his is both the mirror-image, and the reversal, of a left-rotation. Mike Jacobson (University of Calgary) Computer Science 331 Lectures #20-22 25 / 68 Mike Jacobson (University of Calgary) Computer Science 331 Lectures #20-22 26 / 68 Beginning an How o Continue Suppose we wish to insert an object into a red black tree. if includes an object with the same key as then else throw FoundEception (and terminate) Insert a new node storing the object in the usual way. Both of the children of this node should be (black) leaves. Color the new node red. Let z be a pointer to this new node. Proceed as described net... Strategy for Finishing the Operation: At this point, is not necessarily a red-black tree, but there is only a problem at one problem area in the tree. newly-inserted node (color red) may violate red-black tree properties #2 or #4 Rotations and recoloring of nodes will be used to move the problem area closer to the root. Once the problem area has been moved to the root, at most one correction turns back into a red-black tree. Mike Jacobson (University of Calgary) Computer Science 331 Lectures #20-22 27 / 68 Mike Jacobson (University of Calgary) Computer Science 331 Lectures #20-22 28 / 68

Structure of Rest of Algorithm Recall our assumption from the last lecture: parent of root is a dummy node with color black Note: During the eecution of this algorithm, z always points to a red node; this is the only place where there might be a problem z initially points to the newly-inserted node (color red) while the parent of z is red do Make an adjustment (to be described shortly) end while if z is the root then Change the color of z to black end if Loop Invariant Loop invariant: z is red Parent of z is red All other red-black properties are satisfied. Upon termination, loop invariant holds ecept that the parent of z is no longer red. Either: z is the root. Change z to black, and all red-black properties are satisfied. All red-black properties are satisfied. Mike Jacobson (University of Calgary) Computer Science 331 Lectures #20-22 29 / 68 Mike Jacobson (University of Calgary) Computer Science 331 Lectures #20-22 30 / 68 s: Main Case Loop Variant Subcases of Loop Invariant Loop Variant: depth of z Consequence: number of eecutions of loop body is linear in the height of. Note: We will need to check that this is a loop variant! his is the case if z is moved closer to the root after every iteration. Note: Since the parent of z is red it is not the root; the grandparent of z must be black. 1 Parent of z is a left child; sibling y of parent of z is red. (a) z is a left child. (b) z is a right child. 2 Parent of z is a left child; sibling y of parent of z is black. z is a right child. 3 Parent of z is a left child; sibling y of parent of z is black. z is a left child. Subcases 4 6: Mirror images of subcases 1 3: Echange left and right; parent(z) is now a right child Mike Jacobson (University of Calgary) Computer Science 331 Lectures #20-22 31 / 68 Mike Jacobson (University of Calgary) Computer Science 331 Lectures #20-22 32 / 68

s: Main Case s: Main Case Subcase 1a: ree Before Adjustment Subcase 1a: ree After Adjustment z is left child, parent of z is a left child; sibling y of parent of z is red z z 3 4 5 3 4 5 2 2 Recolor,, ; point z to its grandparent. Node z may still cause violations of red-black tree properties #2 or #4, but z has moved closer to the root. Mike Jacobson (University of Calgary) Computer Science 331 Lectures #20-22 33 / 68 Mike Jacobson (University of Calgary) Computer Science 331 Lectures #20-22 34 / 68 s: Main Case s: Main Case Subcase 1b: ree Before Adjustment Subcase 1b: ree After Adjustment z is right child; parent of z is a left child; sibling y of parent of z is red; z z 4 5 4 5 3 3 Recolor,, ; point z to its grandparent. Node z may still cause violations of red-black tree properties #2 or #4, but z has moved closer to the root. Mike Jacobson (University of Calgary) Computer Science 331 Lectures #20-22 35 / 68 Mike Jacobson (University of Calgary) Computer Science 331 Lectures #20-22 36 / 68

s: Main Case s: Main Case Case 2: ree Before Adjustment Case 2: ree After Adjustment z is right child; parent of z is left child; sibling y of parent of z is black; z z 4 5 1 2 3 3 4 5 Point z to its parent. Rotate left at Rotate right at, recolor and. Parent of z is now black, so the while loop terminates and we are finished. Mike Jacobson (University of Calgary) Computer Science 331 Lectures #20-22 37 / 68 Mike Jacobson (University of Calgary) Computer Science 331 Lectures #20-22 38 / 68 s: Main Case s: Main Case Case 3: ree Before Adjustment Case 3: ree After Adjustment z is left child; parent of z is left child; sibling y of parent of z is black; z z 3 4 5 1 2 3 2 4 5 Rotate right at ; recolor and Parent of z is now black, so the while loop terminates and we are finished. Mike Jacobson (University of Calgary) Computer Science 331 Lectures #20-22 39 / 68 Mike Jacobson (University of Calgary) Computer Science 331 Lectures #20-22 40 / 68

s: Main Case Eercises Beginning of a Deletion 3 Describe cases 4 6 and draw the corresponding trees. 4 Confirm that the loop invariant holds after each adjustment. 5 Confirm that the distance of z from the root decreases after each adjustment so the claimed loop variant satisfies the properties it should. Can also try: 6 Show that the insertion algorithm as a whole is correct. 7 Confirm that the total number of steps used by the insertion algorithm is at most linear in the depth of the given tree. Suppose we wish to delete an object with key k from a red black tree. if does not include an object with key k then is not modified; throw KeyNotFoundEcepction and terminate else Ignore the NIL nodes (for now) Consider what would happen if the standard algorithm was applied Let y point the the node that would be deleted Mike Jacobson (University of Calgary) Computer Science 331 Lectures #20-22 41 / 68 Mike Jacobson (University of Calgary) Computer Science 331 Lectures #20-22 42 / 68 Clarification: What is y? Case 1: Deleted Node y was Red Specifically... If at least one child of the object storing k is a leaf (that is, a NIL node) then y is the node storing k Otherwise y is the node storing the smallest key in the right subtree with the node storing k as root Please review the description of deletion of a node from a regular binary search tree if this is not clear! Situation: At least one child of y is a NIL node (because of the choice of y) y and a NIL child can be discarded, with the other child of y promoted to replace y in hen is still a red black tree. = We are finished! Eercise: Confirm that really is still a red-black tree after a red node has been removed (in the usual way). he rest of the lecture concerns the case that the deleted node y was black. Mike Jacobson (University of Calgary) Computer Science 331 Lectures #20-22 43 / 68 Mike Jacobson (University of Calgary) Computer Science 331 Lectures #20-22 44 / 68

Case 2: Deleted Node was Black Possible Problems Suppose we deleted (as described above) a black node y Let be the node that will be promoted to replace y. We have the following possibilities: Both children of y are NIL nodes = is a single NIL node that replaces both of these. One child of y is a NIL node = is the other child (ie, the child of y that is not NIL) Neither child of y is a NIL node = his case is impossible (because of the choice of y) 1 Paths from nodes to leaves that included y are now missing one black node = black-height is not well-defined! 2 It is possible that either and its parent might both be red, or might be red and be the root (Note that both cannot be true at the same time.) here can be no other problems with the tree (yet!) he rest of the notes are about how to correct these problems. Mike Jacobson (University of Calgary) Computer Science 331 Lectures #20-22 45 / 68 Mike Jacobson (University of Calgary) Computer Science 331 Lectures #20-22 46 / 68 Eample Initialization: Fiing Black-Height 10 6 16 Fiing Black-Height: Add two more kinds of nodes, to define black-height once again 2 8 12 1 4 15 18 20 Red-Black Node Count as one black node on a path when computing black-height. Possible cases for : delete 1 : = NIL (no problems!) delete 8 : = NIL (black height problem) delete 18 : = 20 (black height problem) delete 6 : = NIL (black height problem) delete 10 : = 15 (black height problem) Double-Black Node Count as two black nodes on a path when computing black-height. In practice, can use a flag called, for eample, fiuprequired to denote the etra black colour. Mike Jacobson (University of Calgary) Computer Science 331 Lectures #20-22 47 / 68 Mike Jacobson (University of Calgary) Computer Science 331 Lectures #20-22 48 / 68

Initialization: Fiing Black-Height (cont.) wo of hese Cases are Easy! Set the new type of to be Red-Black (if was a red child of the deleted black node) Double-Black (if was a black child of a deleted black node) Note: Black-height of nodes are well-defined again after this change! Possible Cases, At his Point: 1 is a red-black node. 2 is a double-black node at the root. 3 is a double-black node, not at the root. In each case, there are no other problems in the tree. Case 1: is a red-black node. Change to a black node, and stop Eercise: confirm that is a red-black tree after this change. Case 2: is a double-black node at the root. Change to a black node, and stop Eercise: confirm that is a red-black tree after this change. Mike Jacobson (University of Calgary) Computer Science 331 Lectures #20-22 49 / 68 Mike Jacobson (University of Calgary) Computer Science 331 Lectures #20-22 50 / 68 Pseudocode to Finish Deletion of a Black Node Epanding the Remaining Case Pseudocode to finish deletion if a black node was deleted and points to child being promoted: Change the type of as described above. while is double-black and not at the root do Make an adjustment as described net end while if is red-black or at the root then Change to a black node end if One Major Subcase: is the left child of its parent ( red or black) Another Major Subcase: is the right child of its parent. he first of these subcases will be described in detail. he algorithm for the second is almost identical. R Mike Jacobson (University of Calgary) Computer Science 331 Lectures #20-22 51 / 68 Mike Jacobson (University of Calgary) Computer Science 331 Lectures #20-22 52 / 68

Epanding the First Subcase Further Breakdown of Subcases Note: Black-height of is at least two (Property #5) 3 4 5 6 Case 3a black black black black 3b red black black black 3c black black red black 3d? red black black 3e?? black red Various possibilities (depends on color of sibling of ) Eercise: Check that these cases are pairwise eclusive and that no other cases are possible. Mike Jacobson (University of Calgary) Computer Science 331 Lectures #20-22 53 / 68 Mike Jacobson (University of Calgary) Computer Science 331 Lectures #20-22 54 / 68 Case 3a: Before Adjustment Case 3a: After Adjustment Case 3a:,,, all black. Goal: move closer to root. 3 4 5 6 3 4 5 6 Change colors of,, and ; points to its parent After the adjustment: All cases are now possible; is closer to the root. Mike Jacobson (University of Calgary) Computer Science 331 Lectures #20-22 55 / 68 Mike Jacobson (University of Calgary) Computer Science 331 Lectures #20-22 56 / 68

Case 3b: Before Adjustment Case 3b: After Adjustment Case 3b: red;,, black. Goal: finish after this case. 3 4 5 6 3 4 5 6 Change colors of,, and ; points to parent. After the adjustment: None of the cases apply (loop terminates, changed to black) Mike Jacobson (University of Calgary) Computer Science 331 Lectures #20-22 57 / 68 Mike Jacobson (University of Calgary) Computer Science 331 Lectures #20-22 58 / 68 Case 3c: Before Adjustment Case 3c: After Adjustment Case 3c: red;,, black. Goal: transform parent of to red. 5 6 3 4 5 6 3 4 left rotation at change colors of and After the adjustment: has not moved, but cases 3b, 3d, or 3e may now apply. Mike Jacobson (University of Calgary) Computer Science 331 Lectures #20-22 59 / 68 Mike Jacobson (University of Calgary) Computer Science 331 Lectures #20-22 60 / 68

Case 3d: Before Adjustment Case 3d: After Adjustment Case 3d: red; and black. Goal: transform to Case 3e. color c color c 3 4 3 4 5 6 5 6 right rotation at change colors of and After the adjustment: has not moved, but case 3e now applies. Mike Jacobson (University of Calgary) Computer Science 331 Lectures #20-22 61 / 68 Mike Jacobson (University of Calgary) Computer Science 331 Lectures #20-22 62 / 68 Case 3e: Before Adjustment Case 3e: After Adjustment Case 3e: is black; is red. Goal: finish after this case. color c points to root color c color c color c 5 6 3 4 5 6 3 4 left rotation at recolor and switch colors of and ; will point to the root of the tree. After the adjustment: Result is a red-black tree! Mike Jacobson (University of Calgary) Computer Science 331 Lectures #20-22 63 / 68 Mike Jacobson (University of Calgary) Computer Science 331 Lectures #20-22 64 / 68

Partial Correctness Other Major Subcase: is a Right Child Loop Invariant (Elimination of Double-Black Node) 3f: Mirror Image of 3a 3g: Mirror Image of 3b 3h: Mirror Image of 3c 3i: Mirror Image of 3d 3j: Mirror Image of 3d In each case, the mirror image is produced by echanging the left and right children of and of Loop invariant: is double-black is not the root Eactly one of Case 3a-3j applies All other red-black properties are satisfied. Upon termination, loop invariant holds ecept one of the following: is red-black or is the root. Change to black, and all red-black properties are satisfied All red-black properties are satisfied. Done! Eercise: verify that this is in fact a loop invariant Mike Jacobson (University of Calgary) Computer Science 331 Lectures #20-22 65 / 68 Mike Jacobson (University of Calgary) Computer Science 331 Lectures #20-22 66 / 68 ermination and Efficiency Reference Loop Variant (Elimination of Double Black Node) Reference Consider the function that is defined as follows. Case Function Value Red-Black ree 0 is red-black 0 is at root 0 Case 3a or 3f depth() + 4 Case 3b or 3g 1 Case 3c or 3h 3 Case 3d or 3i 2 Case 3e or 3j 1 Eercise: Show that this is a loop variant total cost linear in height of the tree Main reference: Introduction to Algorithms, Chapter 13 Note: In the above reference, cases are named and grouped differently to provide more compact pseudocode. Additional Reference: Data Structures: Abstraction and Design Using Java, Chapter 9.1 and 9.3 Mike Jacobson (University of Calgary) Computer Science 331 Lectures #20-22 67 / 68 Mike Jacobson (University of Calgary) Computer Science 331 Lectures #20-22 68 / 68