![Page 1: Lecture 6: Binary Search Trees (BST) and Red-Black …saravanan-thirumuruganathan.github.io/cse5311Fall2014/...Outline 1 Data Structures for representing Dynamic Sets Binary Search](https://reader034.vdocuments.us/reader034/viewer/2022050122/5f52510f14bd015cf710f64e/html5/thumbnails/1.jpg)
Lecture 6: Binary Search Trees (BST) andRed-Black Trees (RBTs)
Instructor: Saravanan Thirumuruganathan
CSE 5311 Saravanan Thirumuruganathan
![Page 2: Lecture 6: Binary Search Trees (BST) and Red-Black …saravanan-thirumuruganathan.github.io/cse5311Fall2014/...Outline 1 Data Structures for representing Dynamic Sets Binary Search](https://reader034.vdocuments.us/reader034/viewer/2022050122/5f52510f14bd015cf710f64e/html5/thumbnails/2.jpg)
Outline
1 Data Structures for representing Dynamic Sets
Binary Search Trees (BSTs)Balanced Search TreesBalanced Binary Trees - Red Black Trees (RBTs)
CSE 5311 Saravanan Thirumuruganathan
![Page 3: Lecture 6: Binary Search Trees (BST) and Red-Black …saravanan-thirumuruganathan.github.io/cse5311Fall2014/...Outline 1 Data Structures for representing Dynamic Sets Binary Search](https://reader034.vdocuments.us/reader034/viewer/2022050122/5f52510f14bd015cf710f64e/html5/thumbnails/3.jpg)
In-Class Quizzes
URL: http://m.socrative.com/Room Name: 4f2bb99e
CSE 5311 Saravanan Thirumuruganathan
![Page 4: Lecture 6: Binary Search Trees (BST) and Red-Black …saravanan-thirumuruganathan.github.io/cse5311Fall2014/...Outline 1 Data Structures for representing Dynamic Sets Binary Search](https://reader034.vdocuments.us/reader034/viewer/2022050122/5f52510f14bd015cf710f64e/html5/thumbnails/4.jpg)
Data Structures
Key Things to Know for Data StructuresMotivation
Distinctive Property
Major operations
Key Helper Routines
Representation
Algorithms for major operations
Applications
CSE 5311 Saravanan Thirumuruganathan
![Page 5: Lecture 6: Binary Search Trees (BST) and Red-Black …saravanan-thirumuruganathan.github.io/cse5311Fall2014/...Outline 1 Data Structures for representing Dynamic Sets Binary Search](https://reader034.vdocuments.us/reader034/viewer/2022050122/5f52510f14bd015cf710f64e/html5/thumbnails/5.jpg)
Trees
Non-Linear Data Structures:Very common and useful category of data structures
Most popular one is hierarchical
CSE 5311 Saravanan Thirumuruganathan
![Page 6: Lecture 6: Binary Search Trees (BST) and Red-Black …saravanan-thirumuruganathan.github.io/cse5311Fall2014/...Outline 1 Data Structures for representing Dynamic Sets Binary Search](https://reader034.vdocuments.us/reader034/viewer/2022050122/5f52510f14bd015cf710f64e/html5/thumbnails/6.jpg)
Trees - Applications1
Family Tree:
1http://interactivepython.org/runestone/static/pythonds/Trees/
trees.html
CSE 5311 Saravanan Thirumuruganathan
![Page 7: Lecture 6: Binary Search Trees (BST) and Red-Black …saravanan-thirumuruganathan.github.io/cse5311Fall2014/...Outline 1 Data Structures for representing Dynamic Sets Binary Search](https://reader034.vdocuments.us/reader034/viewer/2022050122/5f52510f14bd015cf710f64e/html5/thumbnails/7.jpg)
Trees - Applications2
Taxonomy Tree:
2http://interactivepython.org/runestone/static/pythonds/Trees/
trees.html
CSE 5311 Saravanan Thirumuruganathan
![Page 8: Lecture 6: Binary Search Trees (BST) and Red-Black …saravanan-thirumuruganathan.github.io/cse5311Fall2014/...Outline 1 Data Structures for representing Dynamic Sets Binary Search](https://reader034.vdocuments.us/reader034/viewer/2022050122/5f52510f14bd015cf710f64e/html5/thumbnails/8.jpg)
Trees - Applications3
Directory Tree:
3http://interactivepython.org/runestone/static/pythonds/Trees/
trees.html
CSE 5311 Saravanan Thirumuruganathan
![Page 9: Lecture 6: Binary Search Trees (BST) and Red-Black …saravanan-thirumuruganathan.github.io/cse5311Fall2014/...Outline 1 Data Structures for representing Dynamic Sets Binary Search](https://reader034.vdocuments.us/reader034/viewer/2022050122/5f52510f14bd015cf710f64e/html5/thumbnails/9.jpg)
Trees - Applications4
HTML DOM (Parse) Tree:
4http://interactivepython.org/runestone/static/pythonds/Trees/
trees.html
CSE 5311 Saravanan Thirumuruganathan
![Page 10: Lecture 6: Binary Search Trees (BST) and Red-Black …saravanan-thirumuruganathan.github.io/cse5311Fall2014/...Outline 1 Data Structures for representing Dynamic Sets Binary Search](https://reader034.vdocuments.us/reader034/viewer/2022050122/5f52510f14bd015cf710f64e/html5/thumbnails/10.jpg)
Tree - Terminology
Node
Edge
Root
Children
Parent
Sibling
Subtree
Leaf/External node
Internal node
Level (node)
Height (tree)
Arity
CSE 5311 Saravanan Thirumuruganathan
![Page 11: Lecture 6: Binary Search Trees (BST) and Red-Black …saravanan-thirumuruganathan.github.io/cse5311Fall2014/...Outline 1 Data Structures for representing Dynamic Sets Binary Search](https://reader034.vdocuments.us/reader034/viewer/2022050122/5f52510f14bd015cf710f64e/html5/thumbnails/11.jpg)
Tree - Abstract Representation5
5http://interactivepython.org/runestone/static/pythonds/Trees/
trees.html
CSE 5311 Saravanan Thirumuruganathan
![Page 12: Lecture 6: Binary Search Trees (BST) and Red-Black …saravanan-thirumuruganathan.github.io/cse5311Fall2014/...Outline 1 Data Structures for representing Dynamic Sets Binary Search](https://reader034.vdocuments.us/reader034/viewer/2022050122/5f52510f14bd015cf710f64e/html5/thumbnails/12.jpg)
Motivation
Store dynamic set efficiently
Use good ideas from ordered list (OL) and ordered doublylinked list (ODLL)
Use hierarchical storage to avoid pitfalls of OL and ODLL
First attempt at hierarchical data structure that tries toimplement all 7 operations efficiently
CSE 5311 Saravanan Thirumuruganathan
![Page 13: Lecture 6: Binary Search Trees (BST) and Red-Black …saravanan-thirumuruganathan.github.io/cse5311Fall2014/...Outline 1 Data Structures for representing Dynamic Sets Binary Search](https://reader034.vdocuments.us/reader034/viewer/2022050122/5f52510f14bd015cf710f64e/html5/thumbnails/13.jpg)
Binary Trees
Each node has at most 2 children
Commonly referred to as left and right child
The descendants of left child constitute left subtree
The descendants of right child constitute right subtree
CSE 5311 Saravanan Thirumuruganathan
![Page 14: Lecture 6: Binary Search Trees (BST) and Red-Black …saravanan-thirumuruganathan.github.io/cse5311Fall2014/...Outline 1 Data Structures for representing Dynamic Sets Binary Search](https://reader034.vdocuments.us/reader034/viewer/2022050122/5f52510f14bd015cf710f64e/html5/thumbnails/14.jpg)
BST Property
For every node x , the keys of left subtree ≤ key(x)
For every node x , the keys of right subtree ≥ key(x)
6
6http:
//www.cs.princeton.edu/~rs/AlgsDS07/08BinarySearchTrees.pdf
CSE 5311 Saravanan Thirumuruganathan
![Page 15: Lecture 6: Binary Search Trees (BST) and Red-Black …saravanan-thirumuruganathan.github.io/cse5311Fall2014/...Outline 1 Data Structures for representing Dynamic Sets Binary Search](https://reader034.vdocuments.us/reader034/viewer/2022050122/5f52510f14bd015cf710f64e/html5/thumbnails/15.jpg)
BST Examples7
7http://en.wikipedia.org/wiki/Binary_search_tree
CSE 5311 Saravanan Thirumuruganathan
![Page 16: Lecture 6: Binary Search Trees (BST) and Red-Black …saravanan-thirumuruganathan.github.io/cse5311Fall2014/...Outline 1 Data Structures for representing Dynamic Sets Binary Search](https://reader034.vdocuments.us/reader034/viewer/2022050122/5f52510f14bd015cf710f64e/html5/thumbnails/16.jpg)
BST Height8
There exists multiple possible BSTs to store same set ofelements
Minimum and Maximum Height:
lg n and n
Best and worst case analysis (or specify analysis wrt height)
8https://engineering.purdue.edu/~ee608/handouts/lec10.pdf
CSE 5311 Saravanan Thirumuruganathan
![Page 17: Lecture 6: Binary Search Trees (BST) and Red-Black …saravanan-thirumuruganathan.github.io/cse5311Fall2014/...Outline 1 Data Structures for representing Dynamic Sets Binary Search](https://reader034.vdocuments.us/reader034/viewer/2022050122/5f52510f14bd015cf710f64e/html5/thumbnails/17.jpg)
BST Height8
There exists multiple possible BSTs to store same set ofelements
Minimum and Maximum Height: lg n and n
Best and worst case analysis (or specify analysis wrt height)
8https://engineering.purdue.edu/~ee608/handouts/lec10.pdf
CSE 5311 Saravanan Thirumuruganathan
![Page 18: Lecture 6: Binary Search Trees (BST) and Red-Black …saravanan-thirumuruganathan.github.io/cse5311Fall2014/...Outline 1 Data Structures for representing Dynamic Sets Binary Search](https://reader034.vdocuments.us/reader034/viewer/2022050122/5f52510f14bd015cf710f64e/html5/thumbnails/18.jpg)
Representation - I
key: Stores key information that is used to compare two nodes
value: Stores satellite/auxillary information
parent: Pointer to parent node. parent(root) = NULL
left: Pointer to left child if it exists. Else NULL
right: Pointer to right child if it exists. Else NULL
CSE 5311 Saravanan Thirumuruganathan
![Page 20: Lecture 6: Binary Search Trees (BST) and Red-Black …saravanan-thirumuruganathan.github.io/cse5311Fall2014/...Outline 1 Data Structures for representing Dynamic Sets Binary Search](https://reader034.vdocuments.us/reader034/viewer/2022050122/5f52510f14bd015cf710f64e/html5/thumbnails/20.jpg)
Representation - II
CSE 5311 Saravanan Thirumuruganathan
![Page 21: Lecture 6: Binary Search Trees (BST) and Red-Black …saravanan-thirumuruganathan.github.io/cse5311Fall2014/...Outline 1 Data Structures for representing Dynamic Sets Binary Search](https://reader034.vdocuments.us/reader034/viewer/2022050122/5f52510f14bd015cf710f64e/html5/thumbnails/21.jpg)
Major Operations
Search
Insert
Minimum/Maximum
Successor/Predecessor
Deletion
Traversals
CSE 5311 Saravanan Thirumuruganathan
![Page 22: Lecture 6: Binary Search Trees (BST) and Red-Black …saravanan-thirumuruganathan.github.io/cse5311Fall2014/...Outline 1 Data Structures for representing Dynamic Sets Binary Search](https://reader034.vdocuments.us/reader034/viewer/2022050122/5f52510f14bd015cf710f64e/html5/thumbnails/22.jpg)
Key Helper Routines
Successor/Predecessor
Traversals
Case by Case Analysis:
Analysis by number of children : 0, 1, 2Analysis by type of children: left, right
CSE 5311 Saravanan Thirumuruganathan
![Page 23: Lecture 6: Binary Search Trees (BST) and Red-Black …saravanan-thirumuruganathan.github.io/cse5311Fall2014/...Outline 1 Data Structures for representing Dynamic Sets Binary Search](https://reader034.vdocuments.us/reader034/viewer/2022050122/5f52510f14bd015cf710f64e/html5/thumbnails/23.jpg)
BST: Search
Search: 4
CSE 5311 Saravanan Thirumuruganathan
![Page 24: Lecture 6: Binary Search Trees (BST) and Red-Black …saravanan-thirumuruganathan.github.io/cse5311Fall2014/...Outline 1 Data Structures for representing Dynamic Sets Binary Search](https://reader034.vdocuments.us/reader034/viewer/2022050122/5f52510f14bd015cf710f64e/html5/thumbnails/24.jpg)
BST: Search
CSE 5311 Saravanan Thirumuruganathan
![Page 25: Lecture 6: Binary Search Trees (BST) and Red-Black …saravanan-thirumuruganathan.github.io/cse5311Fall2014/...Outline 1 Data Structures for representing Dynamic Sets Binary Search](https://reader034.vdocuments.us/reader034/viewer/2022050122/5f52510f14bd015cf710f64e/html5/thumbnails/25.jpg)
BST: Search
Tree-Search(x, k):
if x == NULL or k == x.key
return x
if k < x.key
return Tree-Search(x.left, k)
else
return Tree-Search(x.right, k)
Analysis:
O(h)
Best Case: lg n and Worst Case: O(n)
CSE 5311 Saravanan Thirumuruganathan
![Page 26: Lecture 6: Binary Search Trees (BST) and Red-Black …saravanan-thirumuruganathan.github.io/cse5311Fall2014/...Outline 1 Data Structures for representing Dynamic Sets Binary Search](https://reader034.vdocuments.us/reader034/viewer/2022050122/5f52510f14bd015cf710f64e/html5/thumbnails/26.jpg)
BST: Search
Tree-Search(x, k):
if x == NULL or k == x.key
return x
if k < x.key
return Tree-Search(x.left, k)
else
return Tree-Search(x.right, k)
Analysis: O(h)
Best Case: lg n and Worst Case: O(n)
CSE 5311 Saravanan Thirumuruganathan
![Page 27: Lecture 6: Binary Search Trees (BST) and Red-Black …saravanan-thirumuruganathan.github.io/cse5311Fall2014/...Outline 1 Data Structures for representing Dynamic Sets Binary Search](https://reader034.vdocuments.us/reader034/viewer/2022050122/5f52510f14bd015cf710f64e/html5/thumbnails/27.jpg)
BST: Insert
Insert: 13
CSE 5311 Saravanan Thirumuruganathan
![Page 28: Lecture 6: Binary Search Trees (BST) and Red-Black …saravanan-thirumuruganathan.github.io/cse5311Fall2014/...Outline 1 Data Structures for representing Dynamic Sets Binary Search](https://reader034.vdocuments.us/reader034/viewer/2022050122/5f52510f14bd015cf710f64e/html5/thumbnails/28.jpg)
BST: Insert
Insert: 13
CSE 5311 Saravanan Thirumuruganathan
![Page 29: Lecture 6: Binary Search Trees (BST) and Red-Black …saravanan-thirumuruganathan.github.io/cse5311Fall2014/...Outline 1 Data Structures for representing Dynamic Sets Binary Search](https://reader034.vdocuments.us/reader034/viewer/2022050122/5f52510f14bd015cf710f64e/html5/thumbnails/29.jpg)
BST:
Analysis:
O(h)
Best Case: lg n and Worst Case: O(n)
CSE 5311 Saravanan Thirumuruganathan
![Page 30: Lecture 6: Binary Search Trees (BST) and Red-Black …saravanan-thirumuruganathan.github.io/cse5311Fall2014/...Outline 1 Data Structures for representing Dynamic Sets Binary Search](https://reader034.vdocuments.us/reader034/viewer/2022050122/5f52510f14bd015cf710f64e/html5/thumbnails/30.jpg)
BST:
Analysis: O(h)
Best Case: lg n and Worst Case: O(n)
CSE 5311 Saravanan Thirumuruganathan
![Page 31: Lecture 6: Binary Search Trees (BST) and Red-Black …saravanan-thirumuruganathan.github.io/cse5311Fall2014/...Outline 1 Data Structures for representing Dynamic Sets Binary Search](https://reader034.vdocuments.us/reader034/viewer/2022050122/5f52510f14bd015cf710f64e/html5/thumbnails/31.jpg)
BST: Minimum
CSE 5311 Saravanan Thirumuruganathan
![Page 32: Lecture 6: Binary Search Trees (BST) and Red-Black …saravanan-thirumuruganathan.github.io/cse5311Fall2014/...Outline 1 Data Structures for representing Dynamic Sets Binary Search](https://reader034.vdocuments.us/reader034/viewer/2022050122/5f52510f14bd015cf710f64e/html5/thumbnails/32.jpg)
BST: Minimum
CSE 5311 Saravanan Thirumuruganathan
![Page 33: Lecture 6: Binary Search Trees (BST) and Red-Black …saravanan-thirumuruganathan.github.io/cse5311Fall2014/...Outline 1 Data Structures for representing Dynamic Sets Binary Search](https://reader034.vdocuments.us/reader034/viewer/2022050122/5f52510f14bd015cf710f64e/html5/thumbnails/33.jpg)
BST: Minimum
Tree-Minimum(x)
while x.left is not NULL
x = x.left
return x
Analysis: O(h)
Best Case: lg n and Worst Case: O(n)
CSE 5311 Saravanan Thirumuruganathan
![Page 34: Lecture 6: Binary Search Trees (BST) and Red-Black …saravanan-thirumuruganathan.github.io/cse5311Fall2014/...Outline 1 Data Structures for representing Dynamic Sets Binary Search](https://reader034.vdocuments.us/reader034/viewer/2022050122/5f52510f14bd015cf710f64e/html5/thumbnails/34.jpg)
BST: Maximum
CSE 5311 Saravanan Thirumuruganathan
![Page 35: Lecture 6: Binary Search Trees (BST) and Red-Black …saravanan-thirumuruganathan.github.io/cse5311Fall2014/...Outline 1 Data Structures for representing Dynamic Sets Binary Search](https://reader034.vdocuments.us/reader034/viewer/2022050122/5f52510f14bd015cf710f64e/html5/thumbnails/35.jpg)
BST: Maximum
CSE 5311 Saravanan Thirumuruganathan
![Page 36: Lecture 6: Binary Search Trees (BST) and Red-Black …saravanan-thirumuruganathan.github.io/cse5311Fall2014/...Outline 1 Data Structures for representing Dynamic Sets Binary Search](https://reader034.vdocuments.us/reader034/viewer/2022050122/5f52510f14bd015cf710f64e/html5/thumbnails/36.jpg)
BST: Maximum
Tree-Maximum(x)
while x.right is not NULL
x = x.right
return x
Analysis: O(h)
Best Case: lg n and Worst Case: O(n)
CSE 5311 Saravanan Thirumuruganathan
![Page 37: Lecture 6: Binary Search Trees (BST) and Red-Black …saravanan-thirumuruganathan.github.io/cse5311Fall2014/...Outline 1 Data Structures for representing Dynamic Sets Binary Search](https://reader034.vdocuments.us/reader034/viewer/2022050122/5f52510f14bd015cf710f64e/html5/thumbnails/37.jpg)
BST: Successor
Successor: 15
CSE 5311 Saravanan Thirumuruganathan
![Page 38: Lecture 6: Binary Search Trees (BST) and Red-Black …saravanan-thirumuruganathan.github.io/cse5311Fall2014/...Outline 1 Data Structures for representing Dynamic Sets Binary Search](https://reader034.vdocuments.us/reader034/viewer/2022050122/5f52510f14bd015cf710f64e/html5/thumbnails/38.jpg)
BST: Successor
Successor: 15
CSE 5311 Saravanan Thirumuruganathan
![Page 39: Lecture 6: Binary Search Trees (BST) and Red-Black …saravanan-thirumuruganathan.github.io/cse5311Fall2014/...Outline 1 Data Structures for representing Dynamic Sets Binary Search](https://reader034.vdocuments.us/reader034/viewer/2022050122/5f52510f14bd015cf710f64e/html5/thumbnails/39.jpg)
BST: Successor
Successor: 13
CSE 5311 Saravanan Thirumuruganathan
![Page 40: Lecture 6: Binary Search Trees (BST) and Red-Black …saravanan-thirumuruganathan.github.io/cse5311Fall2014/...Outline 1 Data Structures for representing Dynamic Sets Binary Search](https://reader034.vdocuments.us/reader034/viewer/2022050122/5f52510f14bd015cf710f64e/html5/thumbnails/40.jpg)
BST: Successor
Successor: 13
CSE 5311 Saravanan Thirumuruganathan
![Page 41: Lecture 6: Binary Search Trees (BST) and Red-Black …saravanan-thirumuruganathan.github.io/cse5311Fall2014/...Outline 1 Data Structures for representing Dynamic Sets Binary Search](https://reader034.vdocuments.us/reader034/viewer/2022050122/5f52510f14bd015cf710f64e/html5/thumbnails/41.jpg)
BST: Successor
CSE 5311 Saravanan Thirumuruganathan
![Page 42: Lecture 6: Binary Search Trees (BST) and Red-Black …saravanan-thirumuruganathan.github.io/cse5311Fall2014/...Outline 1 Data Structures for representing Dynamic Sets Binary Search](https://reader034.vdocuments.us/reader034/viewer/2022050122/5f52510f14bd015cf710f64e/html5/thumbnails/42.jpg)
BST:
Tree-Successor(x):
if x.right is not NULL
return Tree-Minimum(x.right)
y = x.parent
while y is not NULL and x == y.right
x = y
y = y.parent
return y
BST Property allowed us to find successor without comparingkeys
Analysis: O(h)
Best Case: lg n and Worst Case: O(n)
CSE 5311 Saravanan Thirumuruganathan
![Page 43: Lecture 6: Binary Search Trees (BST) and Red-Black …saravanan-thirumuruganathan.github.io/cse5311Fall2014/...Outline 1 Data Structures for representing Dynamic Sets Binary Search](https://reader034.vdocuments.us/reader034/viewer/2022050122/5f52510f14bd015cf710f64e/html5/thumbnails/43.jpg)
BST: Predecessor
Predecessor: 6
CSE 5311 Saravanan Thirumuruganathan
![Page 44: Lecture 6: Binary Search Trees (BST) and Red-Black …saravanan-thirumuruganathan.github.io/cse5311Fall2014/...Outline 1 Data Structures for representing Dynamic Sets Binary Search](https://reader034.vdocuments.us/reader034/viewer/2022050122/5f52510f14bd015cf710f64e/html5/thumbnails/44.jpg)
BST: Predecessor
Predecessor: 6
CSE 5311 Saravanan Thirumuruganathan
![Page 45: Lecture 6: Binary Search Trees (BST) and Red-Black …saravanan-thirumuruganathan.github.io/cse5311Fall2014/...Outline 1 Data Structures for representing Dynamic Sets Binary Search](https://reader034.vdocuments.us/reader034/viewer/2022050122/5f52510f14bd015cf710f64e/html5/thumbnails/45.jpg)
BST: Predecessor
Predecessor: 17
CSE 5311 Saravanan Thirumuruganathan
![Page 46: Lecture 6: Binary Search Trees (BST) and Red-Black …saravanan-thirumuruganathan.github.io/cse5311Fall2014/...Outline 1 Data Structures for representing Dynamic Sets Binary Search](https://reader034.vdocuments.us/reader034/viewer/2022050122/5f52510f14bd015cf710f64e/html5/thumbnails/46.jpg)
BST: Predecessor
Predecessor: 17
CSE 5311 Saravanan Thirumuruganathan
![Page 47: Lecture 6: Binary Search Trees (BST) and Red-Black …saravanan-thirumuruganathan.github.io/cse5311Fall2014/...Outline 1 Data Structures for representing Dynamic Sets Binary Search](https://reader034.vdocuments.us/reader034/viewer/2022050122/5f52510f14bd015cf710f64e/html5/thumbnails/47.jpg)
BST:
Tree-Predecessor(x):
if x.left is not NULL
return Tree-Maximum(x.left)
y = x.parent
while y is not NULL and x == y.left
x = y
y = y.parent
return y
BST Property allowed us to find predecessor withoutcomparing keys
Analysis: O(h)
Best Case: lg n and Worst Case: O(n)
CSE 5311 Saravanan Thirumuruganathan
![Page 48: Lecture 6: Binary Search Trees (BST) and Red-Black …saravanan-thirumuruganathan.github.io/cse5311Fall2014/...Outline 1 Data Structures for representing Dynamic Sets Binary Search](https://reader034.vdocuments.us/reader034/viewer/2022050122/5f52510f14bd015cf710f64e/html5/thumbnails/48.jpg)
BST: Deletion
Trickiest Operation! Suppose we want to delete node z
1 z has no children: Replace z with NULL
2 z has one children c : Promote c to z ’s place3 z has two children:
(a) Let z ’s successor be y(b) y is either a leaf or has only right child(c) Promote y to z ’s place(d) Fix y ’s loss via Cases 1 or 2
CSE 5311 Saravanan Thirumuruganathan
![Page 49: Lecture 6: Binary Search Trees (BST) and Red-Black …saravanan-thirumuruganathan.github.io/cse5311Fall2014/...Outline 1 Data Structures for representing Dynamic Sets Binary Search](https://reader034.vdocuments.us/reader034/viewer/2022050122/5f52510f14bd015cf710f64e/html5/thumbnails/49.jpg)
BST: Deletion Case I10
10https:
//www.cs.rochester.edu/u/gildea/csc282/slides/C12-bst.pdf
CSE 5311 Saravanan Thirumuruganathan
![Page 50: Lecture 6: Binary Search Trees (BST) and Red-Black …saravanan-thirumuruganathan.github.io/cse5311Fall2014/...Outline 1 Data Structures for representing Dynamic Sets Binary Search](https://reader034.vdocuments.us/reader034/viewer/2022050122/5f52510f14bd015cf710f64e/html5/thumbnails/50.jpg)
BST: Deletion Case II11
11https:
//www.cs.rochester.edu/u/gildea/csc282/slides/C12-bst.pdf
CSE 5311 Saravanan Thirumuruganathan
![Page 51: Lecture 6: Binary Search Trees (BST) and Red-Black …saravanan-thirumuruganathan.github.io/cse5311Fall2014/...Outline 1 Data Structures for representing Dynamic Sets Binary Search](https://reader034.vdocuments.us/reader034/viewer/2022050122/5f52510f14bd015cf710f64e/html5/thumbnails/51.jpg)
BST: Deletion Case III12
12https:
//www.cs.rochester.edu/u/gildea/csc282/slides/C12-bst.pdf
CSE 5311 Saravanan Thirumuruganathan
![Page 52: Lecture 6: Binary Search Trees (BST) and Red-Black …saravanan-thirumuruganathan.github.io/cse5311Fall2014/...Outline 1 Data Structures for representing Dynamic Sets Binary Search](https://reader034.vdocuments.us/reader034/viewer/2022050122/5f52510f14bd015cf710f64e/html5/thumbnails/52.jpg)
Digression
Perfectly fine if you cannot do deletion by memory
Things will become hairier in RBT
As long as you remember the key ideas and operations, youwill be fine
CSE 5311 Saravanan Thirumuruganathan
![Page 53: Lecture 6: Binary Search Trees (BST) and Red-Black …saravanan-thirumuruganathan.github.io/cse5311Fall2014/...Outline 1 Data Structures for representing Dynamic Sets Binary Search](https://reader034.vdocuments.us/reader034/viewer/2022050122/5f52510f14bd015cf710f64e/html5/thumbnails/53.jpg)
BST: Traversal
Traversal: Visit all nodes in a tree
Many possible traversal strategies
Three are most popular: Pre-Order, In-Order, Post-Order
CSE 5311 Saravanan Thirumuruganathan
![Page 54: Lecture 6: Binary Search Trees (BST) and Red-Black …saravanan-thirumuruganathan.github.io/cse5311Fall2014/...Outline 1 Data Structures for representing Dynamic Sets Binary Search](https://reader034.vdocuments.us/reader034/viewer/2022050122/5f52510f14bd015cf710f64e/html5/thumbnails/54.jpg)
BST: Traversals
In-Order-Walk(x):
if x == NULL
return
In-Order-Walk(x.left)
Print x.key
In-Order-Walk(x.right)
Analysis:
O(n)
Holds true for all three traversals
CSE 5311 Saravanan Thirumuruganathan
![Page 55: Lecture 6: Binary Search Trees (BST) and Red-Black …saravanan-thirumuruganathan.github.io/cse5311Fall2014/...Outline 1 Data Structures for representing Dynamic Sets Binary Search](https://reader034.vdocuments.us/reader034/viewer/2022050122/5f52510f14bd015cf710f64e/html5/thumbnails/55.jpg)
BST: Traversals
In-Order-Walk(x):
if x == NULL
return
In-Order-Walk(x.left)
Print x.key
In-Order-Walk(x.right)
Analysis: O(n)
Holds true for all three traversals
CSE 5311 Saravanan Thirumuruganathan
![Page 56: Lecture 6: Binary Search Trees (BST) and Red-Black …saravanan-thirumuruganathan.github.io/cse5311Fall2014/...Outline 1 Data Structures for representing Dynamic Sets Binary Search](https://reader034.vdocuments.us/reader034/viewer/2022050122/5f52510f14bd015cf710f64e/html5/thumbnails/56.jpg)
BST: Traversal
In-Order:
2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 15, 19, 20.
Pre-Order: 7, 4, 2, 3, 6, 5, 12, 9, 8, 11, 19, 15, 20.
Pre-Order: 3, 2, 5, 6, 4, 8, 11, 9, 15, 20, 19, 12, 7.
CSE 5311 Saravanan Thirumuruganathan
![Page 57: Lecture 6: Binary Search Trees (BST) and Red-Black …saravanan-thirumuruganathan.github.io/cse5311Fall2014/...Outline 1 Data Structures for representing Dynamic Sets Binary Search](https://reader034.vdocuments.us/reader034/viewer/2022050122/5f52510f14bd015cf710f64e/html5/thumbnails/57.jpg)
BST: Traversal
In-Order: 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 15, 19, 20.
Pre-Order:
7, 4, 2, 3, 6, 5, 12, 9, 8, 11, 19, 15, 20.
Pre-Order: 3, 2, 5, 6, 4, 8, 11, 9, 15, 20, 19, 12, 7.
CSE 5311 Saravanan Thirumuruganathan
![Page 58: Lecture 6: Binary Search Trees (BST) and Red-Black …saravanan-thirumuruganathan.github.io/cse5311Fall2014/...Outline 1 Data Structures for representing Dynamic Sets Binary Search](https://reader034.vdocuments.us/reader034/viewer/2022050122/5f52510f14bd015cf710f64e/html5/thumbnails/58.jpg)
BST: Traversal
In-Order: 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 15, 19, 20.
Pre-Order: 7, 4, 2, 3, 6, 5, 12, 9, 8, 11, 19, 15, 20.
Pre-Order:
3, 2, 5, 6, 4, 8, 11, 9, 15, 20, 19, 12, 7.
CSE 5311 Saravanan Thirumuruganathan
![Page 59: Lecture 6: Binary Search Trees (BST) and Red-Black …saravanan-thirumuruganathan.github.io/cse5311Fall2014/...Outline 1 Data Structures for representing Dynamic Sets Binary Search](https://reader034.vdocuments.us/reader034/viewer/2022050122/5f52510f14bd015cf710f64e/html5/thumbnails/59.jpg)
BST: Traversal
In-Order: 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 15, 19, 20.
Pre-Order: 7, 4, 2, 3, 6, 5, 12, 9, 8, 11, 19, 15, 20.
Pre-Order: 3, 2, 5, 6, 4, 8, 11, 9, 15, 20, 19, 12, 7.
CSE 5311 Saravanan Thirumuruganathan
![Page 60: Lecture 6: Binary Search Trees (BST) and Red-Black …saravanan-thirumuruganathan.github.io/cse5311Fall2014/...Outline 1 Data Structures for representing Dynamic Sets Binary Search](https://reader034.vdocuments.us/reader034/viewer/2022050122/5f52510f14bd015cf710f64e/html5/thumbnails/60.jpg)
BST: Traversals
Notice anything special about In-Order traversal?
Returns items in sorted order!
Successor/Predecessor can be expressed in terms on In-Ordertraversal
CSE 5311 Saravanan Thirumuruganathan
![Page 61: Lecture 6: Binary Search Trees (BST) and Red-Black …saravanan-thirumuruganathan.github.io/cse5311Fall2014/...Outline 1 Data Structures for representing Dynamic Sets Binary Search](https://reader034.vdocuments.us/reader034/viewer/2022050122/5f52510f14bd015cf710f64e/html5/thumbnails/61.jpg)
BST: Traversals
Notice anything special about In-Order traversal?
Returns items in sorted order!
Successor/Predecessor can be expressed in terms on In-Ordertraversal
CSE 5311 Saravanan Thirumuruganathan
![Page 62: Lecture 6: Binary Search Trees (BST) and Red-Black …saravanan-thirumuruganathan.github.io/cse5311Fall2014/...Outline 1 Data Structures for representing Dynamic Sets Binary Search](https://reader034.vdocuments.us/reader034/viewer/2022050122/5f52510f14bd015cf710f64e/html5/thumbnails/62.jpg)
Application: Tree-Sort
Tree-Sort:Construct a BST out of elements
Do In-Order traversal
Analysis:Time Complexity: Time Complexity for Constructing Tree +Time Complexity for In-Order traversal
Best Case:
n × lg n + n = O(n lg n)
Worst Case: n × n + n = O(n2)
CSE 5311 Saravanan Thirumuruganathan
![Page 63: Lecture 6: Binary Search Trees (BST) and Red-Black …saravanan-thirumuruganathan.github.io/cse5311Fall2014/...Outline 1 Data Structures for representing Dynamic Sets Binary Search](https://reader034.vdocuments.us/reader034/viewer/2022050122/5f52510f14bd015cf710f64e/html5/thumbnails/63.jpg)
Application: Tree-Sort
Tree-Sort:Construct a BST out of elements
Do In-Order traversal
Analysis:Time Complexity: Time Complexity for Constructing Tree +Time Complexity for In-Order traversal
Best Case: n × lg n + n = O(n lg n)
Worst Case:
n × n + n = O(n2)
CSE 5311 Saravanan Thirumuruganathan
![Page 64: Lecture 6: Binary Search Trees (BST) and Red-Black …saravanan-thirumuruganathan.github.io/cse5311Fall2014/...Outline 1 Data Structures for representing Dynamic Sets Binary Search](https://reader034.vdocuments.us/reader034/viewer/2022050122/5f52510f14bd015cf710f64e/html5/thumbnails/64.jpg)
Application: Tree-Sort
Tree-Sort:Construct a BST out of elements
Do In-Order traversal
Analysis:Time Complexity: Time Complexity for Constructing Tree +Time Complexity for In-Order traversal
Best Case: n × lg n + n = O(n lg n)
Worst Case: n × n + n = O(n2)
CSE 5311 Saravanan Thirumuruganathan
![Page 65: Lecture 6: Binary Search Trees (BST) and Red-Black …saravanan-thirumuruganathan.github.io/cse5311Fall2014/...Outline 1 Data Structures for representing Dynamic Sets Binary Search](https://reader034.vdocuments.us/reader034/viewer/2022050122/5f52510f14bd015cf710f64e/html5/thumbnails/65.jpg)
Balanced Binary Trees
Time complexity of BST operations depends on height
Can vary between O(lg n) to O(n)
BST operations do not take any special care to keep treebalanced
If we can do the balancing efficiently, then all operationsbecome faster
Self-balancing - Do not run balancing algorithms periodically
CSE 5311 Saravanan Thirumuruganathan
![Page 66: Lecture 6: Binary Search Trees (BST) and Red-Black …saravanan-thirumuruganathan.github.io/cse5311Fall2014/...Outline 1 Data Structures for representing Dynamic Sets Binary Search](https://reader034.vdocuments.us/reader034/viewer/2022050122/5f52510f14bd015cf710f64e/html5/thumbnails/66.jpg)
Notion of Balance
Maintaining perfectly balanced trees is very hard andexpensive
So we resort to BSTs that are approximately balanced
Need to define notion of balance
Ideas?
Informally, ensure the longest path in tree is not “too” longMany ways of formally specifying itEg: |height(left subtree) − height(right subtree)| ≤ 1
When can balance be broken? Insertion, Deletion
CSE 5311 Saravanan Thirumuruganathan
![Page 67: Lecture 6: Binary Search Trees (BST) and Red-Black …saravanan-thirumuruganathan.github.io/cse5311Fall2014/...Outline 1 Data Structures for representing Dynamic Sets Binary Search](https://reader034.vdocuments.us/reader034/viewer/2022050122/5f52510f14bd015cf710f64e/html5/thumbnails/67.jpg)
Notion of Balance
Maintaining perfectly balanced trees is very hard andexpensive
So we resort to BSTs that are approximately balanced
Need to define notion of balance
Ideas?
Informally, ensure the longest path in tree is not “too” longMany ways of formally specifying itEg: |height(left subtree) − height(right subtree)| ≤ 1
When can balance be broken?
Insertion, Deletion
CSE 5311 Saravanan Thirumuruganathan
![Page 68: Lecture 6: Binary Search Trees (BST) and Red-Black …saravanan-thirumuruganathan.github.io/cse5311Fall2014/...Outline 1 Data Structures for representing Dynamic Sets Binary Search](https://reader034.vdocuments.us/reader034/viewer/2022050122/5f52510f14bd015cf710f64e/html5/thumbnails/68.jpg)
Notion of Balance
Maintaining perfectly balanced trees is very hard andexpensive
So we resort to BSTs that are approximately balanced
Need to define notion of balance
Ideas?
Informally, ensure the longest path in tree is not “too” longMany ways of formally specifying itEg: |height(left subtree) − height(right subtree)| ≤ 1
When can balance be broken? Insertion, Deletion
CSE 5311 Saravanan Thirumuruganathan
![Page 69: Lecture 6: Binary Search Trees (BST) and Red-Black …saravanan-thirumuruganathan.github.io/cse5311Fall2014/...Outline 1 Data Structures for representing Dynamic Sets Binary Search](https://reader034.vdocuments.us/reader034/viewer/2022050122/5f52510f14bd015cf710f64e/html5/thumbnails/69.jpg)
Balanced Search Trees
Red-Black trees
AVL trees
2− 3 and 2− 3− 4 trees
B-trees and other variants
Treaps
Skip trees
Splay trees
and many many more
CSE 5311 Saravanan Thirumuruganathan
![Page 70: Lecture 6: Binary Search Trees (BST) and Red-Black …saravanan-thirumuruganathan.github.io/cse5311Fall2014/...Outline 1 Data Structures for representing Dynamic Sets Binary Search](https://reader034.vdocuments.us/reader034/viewer/2022050122/5f52510f14bd015cf710f64e/html5/thumbnails/70.jpg)
Red-Black Trees
Red-Black Trees
CSE 5311 Saravanan Thirumuruganathan
![Page 71: Lecture 6: Binary Search Trees (BST) and Red-Black …saravanan-thirumuruganathan.github.io/cse5311Fall2014/...Outline 1 Data Structures for representing Dynamic Sets Binary Search](https://reader034.vdocuments.us/reader034/viewer/2022050122/5f52510f14bd015cf710f64e/html5/thumbnails/71.jpg)
RBT: Motivation
Most important self-balancing BST
Invented by Guibas-Sedgewick
Simplifies/Unifies various balanced tree algorithms
Became popular due to its simplicity in implementation
Stores additional information about color of node (1 bit)
All operations are logarithmic!
CSE 5311 Saravanan Thirumuruganathan
![Page 72: Lecture 6: Binary Search Trees (BST) and Red-Black …saravanan-thirumuruganathan.github.io/cse5311Fall2014/...Outline 1 Data Structures for representing Dynamic Sets Binary Search](https://reader034.vdocuments.us/reader034/viewer/2022050122/5f52510f14bd015cf710f64e/html5/thumbnails/72.jpg)
RBT Property
Every node is either red or black
Root and leaves are black
If node is red, then its parent is black
All simple paths from any node v to a descendent leaf havesame number of black nodes. Aka black-height(v)
CSE 5311 Saravanan Thirumuruganathan
![Page 73: Lecture 6: Binary Search Trees (BST) and Red-Black …saravanan-thirumuruganathan.github.io/cse5311Fall2014/...Outline 1 Data Structures for representing Dynamic Sets Binary Search](https://reader034.vdocuments.us/reader034/viewer/2022050122/5f52510f14bd015cf710f64e/html5/thumbnails/73.jpg)
RBT Example13
13MIT OCW 6-046jCSE 5311 Saravanan Thirumuruganathan
![Page 74: Lecture 6: Binary Search Trees (BST) and Red-Black …saravanan-thirumuruganathan.github.io/cse5311Fall2014/...Outline 1 Data Structures for representing Dynamic Sets Binary Search](https://reader034.vdocuments.us/reader034/viewer/2022050122/5f52510f14bd015cf710f64e/html5/thumbnails/74.jpg)
RBT Example14
14MIT OCW 6-046jCSE 5311 Saravanan Thirumuruganathan
![Page 75: Lecture 6: Binary Search Trees (BST) and Red-Black …saravanan-thirumuruganathan.github.io/cse5311Fall2014/...Outline 1 Data Structures for representing Dynamic Sets Binary Search](https://reader034.vdocuments.us/reader034/viewer/2022050122/5f52510f14bd015cf710f64e/html5/thumbnails/75.jpg)
RBT Property: Implications
If a red node has any children, then it must have two childrenand both must be black
If a black node has only one child, it has to be red
No root to leaf path has two consecutive red nodes
No root to leaf path is more than twice as long as any other
The rules bound the imbalance in the tree
CSE 5311 Saravanan Thirumuruganathan
![Page 76: Lecture 6: Binary Search Trees (BST) and Red-Black …saravanan-thirumuruganathan.github.io/cse5311Fall2014/...Outline 1 Data Structures for representing Dynamic Sets Binary Search](https://reader034.vdocuments.us/reader034/viewer/2022050122/5f52510f14bd015cf710f64e/html5/thumbnails/76.jpg)
Major Operations
Search
Insert
Minimum/Maximum
Successor/Predecessor
Deletion
CSE 5311 Saravanan Thirumuruganathan
![Page 77: Lecture 6: Binary Search Trees (BST) and Red-Black …saravanan-thirumuruganathan.github.io/cse5311Fall2014/...Outline 1 Data Structures for representing Dynamic Sets Binary Search](https://reader034.vdocuments.us/reader034/viewer/2022050122/5f52510f14bd015cf710f64e/html5/thumbnails/77.jpg)
Key Helper Routines
Rotations - Right and Left
Case by Case Analysis:
Analysis by type of children, siblings and uncle (sibling ofparent)Analysis by color of children
CSE 5311 Saravanan Thirumuruganathan
![Page 78: Lecture 6: Binary Search Trees (BST) and Red-Black …saravanan-thirumuruganathan.github.io/cse5311Fall2014/...Outline 1 Data Structures for representing Dynamic Sets Binary Search](https://reader034.vdocuments.us/reader034/viewer/2022050122/5f52510f14bd015cf710f64e/html5/thumbnails/78.jpg)
RBT Theorem
Theorem (RBT Theorem)
A red-black tree with n keys has height
h ≤ 2 lg(n + 1)
Corollary
Operations Search, Min, Max, Successor, Predecessor all run inO(lg n) time on a Red-Black tree with n nodes.
CSE 5311 Saravanan Thirumuruganathan
![Page 79: Lecture 6: Binary Search Trees (BST) and Red-Black …saravanan-thirumuruganathan.github.io/cse5311Fall2014/...Outline 1 Data Structures for representing Dynamic Sets Binary Search](https://reader034.vdocuments.us/reader034/viewer/2022050122/5f52510f14bd015cf710f64e/html5/thumbnails/79.jpg)
RBT - Modifying Operations
Insert and Delete need to be more complex so as to balancethe tree
They cause “changes” to tree
Change of color (recoloring)Change of tree structure via “rotations”
CSE 5311 Saravanan Thirumuruganathan
![Page 80: Lecture 6: Binary Search Trees (BST) and Red-Black …saravanan-thirumuruganathan.github.io/cse5311Fall2014/...Outline 1 Data Structures for representing Dynamic Sets Binary Search](https://reader034.vdocuments.us/reader034/viewer/2022050122/5f52510f14bd015cf710f64e/html5/thumbnails/80.jpg)
Rotations15
Rotation can be done in O(1) time.
Rotations maintain in-order ordering of keys:a ∈ α, b ∈ β, c ∈ γ ⇒ a ≤ A ≤ b ≤ B ≤ c
15MIT OCW 6-046jCSE 5311 Saravanan Thirumuruganathan
![Page 81: Lecture 6: Binary Search Trees (BST) and Red-Black …saravanan-thirumuruganathan.github.io/cse5311Fall2014/...Outline 1 Data Structures for representing Dynamic Sets Binary Search](https://reader034.vdocuments.us/reader034/viewer/2022050122/5f52510f14bd015cf710f64e/html5/thumbnails/81.jpg)
RBT Insertion
Insert x in tree (based on BST property)
Color x red
Only red-black property 3 can be violated
Fix violations by rotations and recoloring
CSE 5311 Saravanan Thirumuruganathan
![Page 82: Lecture 6: Binary Search Trees (BST) and Red-Black …saravanan-thirumuruganathan.github.io/cse5311Fall2014/...Outline 1 Data Structures for representing Dynamic Sets Binary Search](https://reader034.vdocuments.us/reader034/viewer/2022050122/5f52510f14bd015cf710f64e/html5/thumbnails/82.jpg)
RBT : Insertion16
Case I: The parent and “uncle” of x are both redColor parent and uncle of x as blackColor grandparent of x as redRecurse of grandparent of x
16MIT OCW 6.046jCSE 5311 Saravanan Thirumuruganathan
![Page 83: Lecture 6: Binary Search Trees (BST) and Red-Black …saravanan-thirumuruganathan.github.io/cse5311Fall2014/...Outline 1 Data Structures for representing Dynamic Sets Binary Search](https://reader034.vdocuments.us/reader034/viewer/2022050122/5f52510f14bd015cf710f64e/html5/thumbnails/83.jpg)
RBT : Insertion17
Case II: The parent of x is red, the uncle of x is black, x ’sparent is a left child , x is a right child
Left rotate on x ’s parentMake x ’s left child the new xSolve this scenario by using by Case III
17MIT OCW 6.046j
CSE 5311 Saravanan Thirumuruganathan
![Page 84: Lecture 6: Binary Search Trees (BST) and Red-Black …saravanan-thirumuruganathan.github.io/cse5311Fall2014/...Outline 1 Data Structures for representing Dynamic Sets Binary Search](https://reader034.vdocuments.us/reader034/viewer/2022050122/5f52510f14bd015cf710f64e/html5/thumbnails/84.jpg)
RBT : Insertion18
Case III: The parent of x is Red and the uncle is black, x is aleft child, and its parent is a left child
Right rotate on grandparent of xSwitch colors of x ’s parent and x ’s siblingDone!
18MIT OCW 6.046jCSE 5311 Saravanan Thirumuruganathan
![Page 85: Lecture 6: Binary Search Trees (BST) and Red-Black …saravanan-thirumuruganathan.github.io/cse5311Fall2014/...Outline 1 Data Structures for representing Dynamic Sets Binary Search](https://reader034.vdocuments.us/reader034/viewer/2022050122/5f52510f14bd015cf710f64e/html5/thumbnails/85.jpg)
RBT : Insertion Sorted Elements
Refer https://www.cs.utexas.edu/~scottm/cs314/handouts/slides/Topic23RedBlackTrees.pdf for astep-by-step example of how RBT handles insertion in sortedorder
CSE 5311 Saravanan Thirumuruganathan
![Page 86: Lecture 6: Binary Search Trees (BST) and Red-Black …saravanan-thirumuruganathan.github.io/cse5311Fall2014/...Outline 1 Data Structures for representing Dynamic Sets Binary Search](https://reader034.vdocuments.us/reader034/viewer/2022050122/5f52510f14bd015cf710f64e/html5/thumbnails/86.jpg)
RBT: Deletion
Similarly complicated
Refer to CLRS book for full details
CSE 5311 Saravanan Thirumuruganathan
![Page 87: Lecture 6: Binary Search Trees (BST) and Red-Black …saravanan-thirumuruganathan.github.io/cse5311Fall2014/...Outline 1 Data Structures for representing Dynamic Sets Binary Search](https://reader034.vdocuments.us/reader034/viewer/2022050122/5f52510f14bd015cf710f64e/html5/thumbnails/87.jpg)
Summary
Major Concepts:Binary Search Trees
Concept of Self-Balancing
Red-Black Trees
CSE 5311 Saravanan Thirumuruganathan