












Study with the several resources on Docsity
Earn points by helping other students or get them with a premium plan
Prepare for your exams
Study with the several resources on Docsity
Earn points to download
Earn points by helping other students or get them with a premium plan
These are the Lecture Slides of Introduction to Algorithms which includes Expensive Operations, Sort Edges, Running Time, Upshot, Union, Makeset, Disjoint Set, Disjoint Set Union, Naïve Implementation etc. Key important points are: Red Black Trees Two, Binary Search Trees, Augmented, Operations Designed, Height, Color, Red Black Trees, Properties, Guarantee, Every Leaf
Typology: Slides
1 / 20
This page cannot be seen from the preview
Don't miss anything!













Review: Binary Search Trees
■ key : an identifying field inducing a total ordering ■ left : pointer to a left child (may be NULL) ■ right : pointer to a right child (may be NULL) ■ p : pointer to a parent node (NULL for root)
Review: Inorder Tree Walk
TreeWalk(x) TreeWalk(left[x]); print(x); TreeWalk(right[x]); ■ Easy to show by induction on the BST property ■ Preorder tree walk : print root, then left, then right ■ Postorder tree walk : print left, then right, then root
Review: BST Search
TreeSearch(x, k) if (x = NULL or k = key[x]) return x; if (k < key[x]) return TreeSearch(left[x], k); else return TreeSearch(right[x], k);
Review: BST Insert
■ Like the search procedure above ■ Insert x in place of NULL ■ Use a “trailing pointer” to keep track of where you came from (like inserting into singly linked list)
Review: Sorting With BSTs
■ Insert elements of unsorted array from 1.. n ■ Do an inorder tree walk to print in sorted order
■ Best case: Ω( n lg n ) (it’s a comparison sort) ■ Worst case: O(n 2 ) ■ Average case: O( n lg n ) (it’s a quicksort!)
Review: More BST Operations
■ Find leftmost node in tree
■ x has a right subtree: successor is minimum node in right subtree ■ x has no right subtree: successor is first ancestor of x whose left child is also ancestor of x ○ Intuition: As long as you move to the left up the tree, you’re visiting smaller nodes.
Review: More BST Operations
■ x has no children: ○ Remove x ■ x has one child: ○ Splice out x ■ x has two children: ○ Swap x with successor ○ Perform case 1 or 2 to delete it
F B H
A D K
C Example: delete K or H or B
Red-Black Properties
Red-Black Trees
■ Label example with h and bh values
RB Trees: Proving Height Bound
■ Proof by induction on height h ■ Base step: x has height 0 (i.e., NULL leaf node) ○ What is bh(x)?
RB Trees: Proving Height Bound
■ Proof by induction on height h ■ Base step: x has height 0 (i.e., NULL leaf node) ○ What is bh(x)? ○ A: 0 ○ So…subtree contains 2 bh( x )^ - 1 = 2^0 - 1 = 0 internal nodes (TRUE)
RB Trees: Proving Height Bound
n ≥ 2 bh( root )^ - 1 (Why?) n ≥ 2 h /2^ - 1 (Why?) lg( n+1 ) ≥ h /2 (Why?) h ≤ 2 lg( n + 1) (Why?)
Thus h = O(lg n )
RB Trees: Worst-Case Time
■ Minimum(), Maximum() ■ Successor(), Predecessor() ■ Search()
■ Will also take O(lg n ) time ■ But will need special care since they modify tree