Binary search trees Definition

Slides:



Advertisements
Similar presentations
Chapter 13. Red-Black Trees
Advertisements

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.
Balanced Binary Search Trees
Lecture 12: Balanced Binary Search Trees Shang-Hua Teng.
Trees and Red-Black Trees Gordon College Prof. Brinton.
Binary search trees Definition Binary search trees and dynamic set operations Balanced binary search trees –Tree rotations –Red-black trees Move to front.
Compiled by: Dr. Mohammad Alhawarat BST, Priority Queue, Heaps - Heapsort CHAPTER 07.
Balancing Binary Search Trees. Balanced Binary Search Trees A BST is perfectly balanced if, for every node, the difference between the number of nodes.
CSIT 402 Data Structures II
Chapter 13 B Advanced Implementations of Tables – Balanced BSTs.
1 Trees 4: AVL Trees Section 4.4. Motivation When building a binary search tree, what type of trees would we like? Example: 3, 5, 8, 20, 18, 13, 22 2.
1 Binary Search Trees  Average case and worst case Big O for –insertion –deletion –access  Balance is important. Unbalanced trees give worse than log.
CSE332: Data Abstractions Lecture 7: AVL Trees
Balanced Search Trees 2-3 Trees AVL Trees Red-Black Trees
Lecture 23 Red Black Tree Chapter 10 of textbook
Lecture 15 Nov 3, 2013 Height-balanced BST Recall:
AA Trees.
File Organization and Processing Week 3
Lec 13 Oct 17, 2011 AVL tree – height-balanced tree Other options:
Lecture Efficient Binary Trees Chapter 10 of textbook
BCA-II Data Structure Using C
Data Structures – LECTURE Balanced trees
Multiway Search Trees Data may not fit into main memory
Topics covered (since exam 1):
Balancing Binary Search Trees
UNIT III TREES.
CS 332: Algorithms Red-Black Trees David Luebke /20/2018.
Red Black Trees
CSE373: Data Structures & Algorithms
CSE373: Data Structures & Algorithms Lecture 7: AVL Trees
CO4301 – Advanced Games Development Week 10 Red-Black Trees continued
Lecture 22 Binary Search Trees Chapter 10 of textbook
Summary of General Binary search tree
Design and Analysis of Algorithms
AVL Trees "The voyage of discovery is not in seeking new landscapes but in having new eyes. " - Marcel Proust.
Lecture 25 Splay Tree Chapter 10 of textbook
CSE373: Data Structures & Algorithms Lecture 7: AVL Trees
Red-Black Trees Motivations
Chapter 22 : Binary Trees, AVL Trees, and Priority Queues
Monday, April 16, 2018 Announcements… For Today…
Data Structures Balanced Trees CSCI
Data Structures Lecture 4 AVL and WAVL Trees Haim Kaplan and Uri Zwick
Topics covered (since exam 1):
CS202 - Fundamental Structures of Computer Science II
Multi-Way Search Trees
Balanced-Trees This presentation shows you the potential problem of unbalanced tree and show two way to fix it This lecture introduces heaps, which are.
Topics covered (since exam 1):
Lecture 9 Algorithm Analysis
Lecture 9 Algorithm Analysis
v z Chapter 10 AVL Trees Acknowledgement: These slides are adapted from slides provided with Data Structures and Algorithms in C++, Goodrich,
Lecture 9 Algorithm Analysis
CSE373: Data Structures & Algorithms Lecture 5: AVL Trees
Red Black Trees Top-Down Deletion.
Balanced-Trees This presentation shows you the potential problem of unbalanced tree and show two way to fix it This lecture introduces heaps, which are.
(2,4) Trees (2,4) Trees (2,4) Trees.
Algorithms and Data Structures Lecture VIII
CSE 332: Data Abstractions AVL Trees
Topics covered (since exam 1, excluding PQ):
(2,4) Trees 2/15/2019 (2,4) Trees (2,4) Trees.
(2,4) Trees (2,4) Trees (2,4) Trees.
AVL-Trees (Part 1).
CSE2331/5331 Topic 7: Balanced search trees Rotate operation
Lecture 10 Oct 1, 2012 Complete BST deletion Height-balanced BST
(2,4) Trees /6/ :26 AM (2,4) Trees (2,4) Trees
Richard Anderson Spring 2016
Topics covered (since exam 1):
Analysis of Algorithms CS 477/677
Chapter 12&13: Binary Search Trees (BSTs)
Red Black Trees Top-Down Deletion.
326 Lecture 9 Henry Kautz Winter Quarter 2002
Presentation transcript:

Binary search trees Definition Binary search trees and dynamic set operations Balanced binary search trees Tree rotations Red-black trees Move to front “balancing” technique Unsorted linked lists Splay trees

Binary search trees Basic tree property For any node x left subtree has nodes ≤ x right subtree has nodes ≥ x

BSTs and Dynamic Sets Dynamic set operations and binary search trees Search(S,k) Insert(S,x) Delete(S,x) Minimum or Maximum(S) Successor or Predecessor (S,x) List All(S) Merge(S1,S2)

Dynamic Set Operations Listall(T)? time to list? Search(T,k)? search time? Minimum(T)? Maximum(T)? Successor(T,x)? Predecessor(T,x)? Search time Simple Insertion(T,x) Successor: Find the minimal entry in the right sub-tree, if there is a right sub-tree. Otherwise find the first ancestor v such that the entry is in v’s left sub-tree. Predecessor: Find the maximal entry in the left sub-tree, if there is a left sub-tree. Otherwise find the first ancestor v such that the entry is in v’s right sub-tree. In either test, if the root node is reached, no predecessor/ successor exists.

Simple deletion Delete(T,x): Three possible cases: a) x is a leaf : b) x has one child : c) x has two children : Replace x with successor(x). Successor(x) has at most one child (why?); Use step a or b on successor(x)

Simple binary search trees What is the expected height of a binary search tree? Difficult to compute if we allow both insertions and deletions With insertions, analysis of section 12.4 shows that expected height is O(log n) Implications about BSTs as dynamic sets?

Tree-Balancing Algorithms Tree rotations Red-Black Trees Splay Trees Others AVL Trees 2-3 Trees and 2-3-4 Trees

Tree Rotations Right Rotate(T,A) A B B T3 T1 A T1 T2 Left Rotate(T,B)

Red-Black Trees All nodes in the tree are either red or black. Every null-child is included and colored black. All red nodes must have two black children. Every path from any node x (including the root) to a leaf must have the same number of black nodes. How balanced of a tree will this produce? How hard will it be to maintain?

Example Red-Black Tree

Insertion(T,z) Find place to insert using simple insertion Color node z as red Fix up tree so that it is still a red-black tree What needs to be fixed? Problem 1: z is root (first node inserted) Minor detail Problem 2: parent(z) is red

RB-Insert-Fixup Situation: parent(z) is red and z is red Case 1: uncle(z) is red Then make both uncle(z) and parent(z) black and p(p(z)) red and recurse up tree z z

RB-Insert-Fixup (parent(z) is right child of parent(parent(z))) Situation: parent(z) is red and z is red Case 2: uncle(z) is black and z is a left child Right rotate to make into case 3 B A T3 T1 T2 z A B T1 T2 T3 z

RB-Insert-Fixup (parent(z) is right child of parent(parent(z))) Situation: parent(z) is red and z is red Case 3: uncle(z) is black and z is a left child Left rotate to make B root of tree A B C T1 T2 T3 z A B C T1 T2 T3

RB-Insert-Fixup Analysis (parent(z) is right child of parent(parent(z))) Situation: parent(z) is red and z is red Case 1: no rotations, always moving up tree Cases 2 and 3: At most 2 rotations total and tree ends up balanced No more need to fix up once these cases are met Total cost: at most 2 rotations and log n operations

Delete(T,z) Find node y to delete using simple deletion Let x be a child of y if such a child exists (otherwise x is a null child) If y is black, fix up tree so that it is still a red-black tree What needs to be fixed? Problem 1: y was root, so now we might have red root Problem 2: x and parent(y) are both red Problem 3: Removal of y violates black height properties of paths that used to go through y

Move To Front (MTF) Technique A powerful “balancing” mechanism is the “move to front” idea This technique is effective in managing both unsorted lists and binary search trees The idea: Whenever an item is accessed (by search or by insertion), it is always moved to the front In a list, the front is well-defined In a binary search tree, the front of the tree is the root A tree that implements this idea is called a splay tree Rotations are not simple single rotations but occur in pairs We give some intuition about the power of MTF

Splay Tree Example

Splay Tree Example

Effectiveness in lists Reference: Amortized efficiency of list update and paging rules, Sleator and Tarjan, CACM 1985 Problem statement: Suppose you are maintaining an unsorted list where every search must progress from the front of the list to the item (or end of list if search is unsuccessful) Operations: search, insert, delete Costs: finding or deleting the ith item costs i Inserting a new item costs n+1 Immediately after an insertion or search of an item i, item i may be moved anywhere closer to the front of the list at no extra cost Goal: Find a way to manage list that minimizes total cost of a sequence of operations

Notation for computing costs S: sequence of requests (insertions, deletions, searches) A: any algorithm for maintaining list including those those that know S in advance cA(S): cost incurred by algorithm A on sequence S not including paid exchanges xA(S): # of paid exchanges for A on S fA(S): # of free exchanges for A on S Example: List: 5, 9, 2, 7, 3, 6 and we search for 7 MTF then has list with 7, 5, 9, 2, 3, 6 cMTF(S) increases by 4 xMTF(S) increases by 0 since moving 7 to the front is a free fMTF(S) increases by 3 since we made 3 free exchanges to move 7

Performance of MTF Thm: For any algorithm A and any sequence S xMTF(S) + cMTF(S) ≤ 2cA(S) + xA(S) – FA(S) – m Observation: xMTF(S) = 0 Interpretation MTF incurs at most twice the cost of any other algorithm, even those that know the request sequence in advance

Direct Cost Comparison The ideal approach to proving this result is that for each operation, MTF incurs a cost that is at most twice that of algorithm A However, this is clearly not always true Example just before tth operation search(1): A’s list: 1, 20, 7, 9, 3, 5, 24, 4, 8 A’s cost is just 1 MTF’s list: 5, 24, 8, 3, 9, 7, 20, 4, 1 MTF’s cost is 9 How can this happen? Well, since last access to item 1, items 5, 24, 8, 3, 9, 7, 20 and 4 have been accessed. Thus, A must have done some extra work since last access to 1 in order to have 1 at the current front of the list This leads to ideas of potential function and amortized analysis

Potential Function Φ Consider A, MTF, and S Let t be the number of operations performed so far (0 ≤ t ≤ |S|) For any t, we define Φ(t) to be the number of inversions between A’s list and MTF’s list Inversion: a pair of elements x,y s.t. x appears before y in one list and y appears before x in the other list Example MTF: 1, 7, 2, 5 A: 2, 1, 5, 7 Inversions: (1,2), (2,7), (5,7)

Amortized Cost Cost cA(t) is the cost of the tth operation for algorithm A Amortized cost aA(t) of the tth operation is cA(t) + Φ(t) - Φ(t-1) Cost of tth operation + change in potential fct Key observation Σt aMTF(t) = Σt cMTF(t) + Φ(t) - Φ(t-1) = Φ(|S|) - Φ(0) + Σt cMTF(t) Thus, cMTF(S) = Σt cMTF(t) = Φ(0) - Φ(|S|) + Σt aMTF(t) Thus, cMTF(S) ≤ Σt aMTF(t) Note Φ(0) = 0 and Φ(|S|) ≥ 0

Amortized Cost Comparison Our revised goal is to show that MTF incurs an amortized cost that is at most twice that of algorithm A Example just before tth operation search(1): A’s list: 1, 20, 7, 9, 3, 5, 24, 4, 8 A’s cost is just 1 MTF’s list: 5, 24, 8, 3, 9, 7, 20, 4, 1 MTF’s list afterwards: 1, 5, 24, 8, 3, 9, 7, 20, 4, 1 MTF’s direct cost is 9 The change in potential function is -8 as 8 inversions (all involving 1) are eliminated after 1 is moved to the front of the list MTF’s amortized cost is 1

Amortized Cost Comparison Cont’d General case We are searching for x which is at position i in A’s list and k in MTF’s list Direct costs A’s cost to access x is then i MTF’s cost to access x is k Potential function changes Let y be the number of items that precede x in MTF’s list but follow x in A’s list This means k-y-1 items precede x in both lists Note k-y ≤ i. Why? After x is moved to front of MTF’s list y inversions are eliminated k-y-1 inversions are created Thus potential function change is k-2y-1 MTF’s amortized cost is thus: k + (k-2y-1) = 2(k-y) -1 ≤ 2i-1 Similar analysis holds for other operations

Splay Tree Performance Analysis of splay trees also uses a potential function and amortized analysis Individual operations may take O(n) time However, it can be shown that any sequence of m operations including n insertions starting with an empty tree take O(m log n) time Static optimality theorem For any sequence of access operations, a splay tree is asymptotically as efficient as the optimum static search tree (that cannot perform any rotations)

Dynamic Optimality Conjecture Splay trees are as asymptotically fast on any sequence of operations as any other type of search tree with rotations. What does this mean? Worst case sequence of splay tree operations takes amortized O(log n) time per operation Some sequences of operations take less. Accessing the same ten items over and over again Splay tree should then take less on these sequences as well. One special case that has been proven: search in order from the smallest key to the largest key the total time for all n operations is O(n)