Download presentation
Presentation is loading. Please wait.
Published byBrittney Maxwell Modified over 9 years ago
1
Leftist Heaps Text Read Weiss, §23.1 (Skew Heaps) Leftist Heap Definition of null path length Definition of leftist heap Building a Leftist Heap Sequence of inserts Re-heapification if leftist heap property is violated
2
Motivation A binary heap provides O(log n) inserts and O(log n) deletes but suffers from O(n log n) merges A leftist heap offers O(log n) inserts and O(log n) deletes and O(log n) merges Note, however, leftist heap inserts and deletes are more expensive than Binary Heap inserts and deletes
3
Definition A Leftist (min)Heap is a binary tree that satisfies the follow- ing conditions. If X is a node and L and R are its left and right children, then: 1. X.value ≤ L.value 2. X.value ≤ R.value 3. null path length of L ≥ null path length of R where the null path length of a node is the shortest distance between from that node to a descendant with 0 or 1 child. If a node is null, its null path length is −1.
4
Example: Null Path Length 19 2027 43 25 12 15 8 4 node4 8 19 12 15 25 27 20 43 npl1 0 1 1 0 0 0 0 0
5
Example: Null Path Length 19 2027 43 25 12 15 8 4 node4 8 19 12 15 25 27 20 43 npl1 0 1 1 0 0 0 0 0 01 1 0 00 0 0 What are the npl’s of the children of 20 and the right child of 27? What is the npl of the right child of 8?
6
Example: Null Path Length 19 2027 43 25 12 15 8 4 node4 8 19 12 15 25 27 20 43 npl1 0 1 1 0 0 0 0 0 node 4 violates leftist heap property fix by swapping children 01 1 0 00 0 0
7
Leftist Heap 4 node4 8 19 12 15 25 27 20 43 npl1 0 1 1 0 0 0 0 0 25 12 15 8 0 1 0 0 19 2027 43 1 00 0
8
Merging Leftist Heaps 4 25 12 15 8 19 2027 43 6 78 14 Consider two leftist heaps … Task: merge them into a single leftist heap
9
Merging Leftist Heaps 4 25 12 15 8 19 2027 43 6 78 14 First, instantiate a Stack
10
Merging Leftist Heaps 4 25 12 15 8 19 2027 43 6 78 14 Compare root nodes merge(x,y) x y
11
Merging Leftist Heaps 4 25 12 15 8 19 2027 43 6 78 14 Remember smaller value 4 x y
12
Merging Leftist Heaps 4 25 12 15 8 19 2027 43 6 78 14 Repeat the process with the right child of the smaller value 4 x y
13
Merging Leftist Heaps 4 25 12 15 8 19 2027 43 6 78 14 Remember smaller value 6 4 x y
14
Merging Leftist Heaps 4 25 12 15 8 19 2027 43 6 78 14 Repeat the process with the right child of the smaller value 6 4 x y
15
Merging Leftist Heaps 4 25 12 15 8 19 2027 43 6 78 14 Remember smaller value 7 6 4 x y
16
Merging Leftist Heaps 4 25 12 15 8 19 2027 43 6 78 14 Repeat the process with the right child of the smaller value 7 6 4 x y null
17
Merging Leftist Heaps 4 25 12 15 8 19 2027 43 6 78 14 Because one of the arguments is null, return the other argument 7 6 4 x 8
18
Merging Leftist Heaps 4 25 12 15 19 2027 43 6 8 14 Make 8 the right child of 7 7 6 4 x 8 8 7 Refers to node 8
19
Merging Leftist Heaps 4 25 12 15 19 2027 43 6 8 14 Make 7 leftist (by swapping children) 7 6 4 8 8 7 Refers to node 8
20
Merging Leftist Heaps 4 25 12 15 19 2027 43 6 8 14 Return node 7 6 4 7 8 7 Refers to node 8
21
Merging Leftist Heaps 4 25 12 15 19 2027 43 6 8 14 Make 7 the right child of 6 (which it already is) 6 4 7 8 7 Refers to node 8
22
Merging Leftist Heaps 4 25 12 15 19 2027 43 6 8 14 Make 6 leftist (it already is) 6 4 7 8 7 Refers to node 8
23
Merging Leftist Heaps 4 25 12 15 19 2027 43 6 8 14 Return node 6 4 6 8 7 Refers to node 8
24
Merging Leftist Heaps 4 25 12 15 19 2027 43 6 8 14 Make 6 the right child of 4 4 6 8 7
25
Merging Leftist Heaps 4 25 12 15 19 2027 43 6 8 14 Make 4 leftist (it already is) 4 6 8 7
26
Final Leftist Heap 4 25 12 15 19 2027 43 6 8 14 Return node 4 4 8 7 Verify that the tree is heap Verify that the heap is leftist
27
Analysis Height of a leftist heap ≈ O(log n) Maximum number of values stored in Stack ≈ 2 * O(log n) ≈ O(log n) Total cost of merge ≈ O(log n)
28
Inserts and Deletes To insert a node into a leftist heap, merge the leftist heap with the node After deleting root X from a leftist heap, merge its left and right subheaps In summary, there is only one operation, a merge.
29
Skew Heaps Text Read Weiss, §6.7 Skew Heap No need for null path length Definition of skew heap Building a Skew Heap Sequence of inserts Swap children at every merge step
30
Motivation Simplify leftist heap by –not maintaining null path lengths –swapping children at every merge step
31
Definition A Skew (min)Heap is a binary tree that satisfies the follow- ing conditions. If X is a node and L and R are its left and right children, then: 1. X.value ≤ L.value 2. X.value ≤ R.value A Skew (max)Heap is a binary tree that satisfies the follow- ing conditions. If X is a node and L and R are its left and right children, then: 1. X.value ≥ L.value 2. X.value ≥ R.value
32
Merging Skew Heaps 4 25 12 15 8 19 2027 43 6 78 14 Consider two skew heaps … Task: merge them into a single skew heap
33
Merging Skew Heaps 4 25 12 15 8 19 2027 43 6 78 14 First, instantiate a Stack
34
Merging Skew Heaps 4 25 12 15 8 19 2027 43 6 78 14 Compare root nodes merge(x,y) x y
35
Merging Skew Heaps 4 25 12 15 8 19 2027 43 6 78 14 Remember smaller value 4 x y
36
Merging Skew Heaps 4 25 12 15 8 19 2027 43 6 78 14 Repeat the process with the right child of the smaller value 4 x y
37
Merging Skew Heaps 4 25 12 15 8 19 2027 43 6 78 14 Remember smaller value 6 4 x y
38
Merging Skew Heaps 4 25 12 15 8 19 2027 43 6 78 14 Repeat the process with the right child of the smaller value 6 4 x y
39
Merging Skew Heaps 4 25 12 15 8 19 2027 43 6 78 14 Remember smaller value 7 6 4 x y
40
Merging Skew Heaps 4 25 12 15 8 19 2027 43 6 78 14 Repeat the process with the right child of the smaller value 7 6 4 x y null
41
Merging Skew Heaps 4 25 12 15 8 19 2027 43 6 78 14 Because one of the arguments is null, return the other argument 7 6 4 x 8
42
Merging Skew Heaps 4 25 12 15 19 2027 43 6 8 14 Make 8 the right child of 7 7 6 4 x 8 8 7 Refers to node 8
43
Merging Skew Heaps 4 25 12 15 19 2027 43 6 8 14 Swap children of node 7 7 6 4 8 8 7 Refers to node 8
44
Merging Skew Heaps 4 25 12 15 19 2027 43 6 8 14 Return node 7 6 4 7 8 7 Refers to node 8
45
Merging Skew Heaps 4 25 12 15 19 2027 43 6 8 14 Make 7 the right child of 6 (which it already is) 6 4 7 8 7 Refers to node 8
46
Merging Skew Heaps 4 25 12 15 19 2027 43 6 8 14 Swap children of node 6 6 4 7 8 7 Refers to node 8
47
Merging Skew Heaps 4 19 2027 43 Return node 6 4 6 Refers to node 8 25 12 15 6 8 14 8 7
48
Merging Skew Heaps Make 6 the right child of 4 4 6 4 19 2027 43 25 12 15 6 8 14 8 7
49
Merging Skew Heaps Swap children of node 4 4 6 4 19 2027 43 25 12 15 6 8 14 8 7
50
Final Skew Heap Return node 4 4 Verify that the tree is heap Verify that the heap is skew 4 19 2027 43 25 12 15 6 8 14 8 7
51
Analysis Height of a skew heap ≈ O(log n) Maximum number of values stored in Stack ≈ 2 * O(log n) ≈ O(log n) Total cost of merge ≈ O(log n)
52
Inserts and Deletes To insert a node into a skew heap, merge the leftist heap with the node After deleting root X from a skew heap, merge its left and right subheaps In summary, there is only one operation, a merge.
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.