leftist heaps text read weiss, §23.1 (skew heaps) leftist heap definition of null path length...
TRANSCRIPT
Leftist HeapsText• 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
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
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.value2. X.value ≤ R.value3. 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.
Example: Null Path Length
19
2027
4325
12
15
8
4
node 4 8 19 12 15 25 27 20 43
npl 1 0 1 1 0 0 0 0 0
Example: Null Path Length
19
2027
4325
12
15
8
4
node 4 8 19 12 15 25 27 20 43
npl 1 0 1 1 0 0 0 0 0
0 1
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?
Example: Null Path Length
19
2027
4325
12
15
8
4
node 4 8 19 12 15 25 27 20 43
npl 1 0 1 1 0 0 0 0 0
•node 4 violates leftist heap property fix by swapping children
0 1
1
0
00
0 0
Leftist Heap
4
node 4 8 19 12 15 25 27 20 43
npl 1 0 1 1 0 0 0 0 0
25
12
15
8 0
1
0 0
19
2027
43
1
00
0
Merging Leftist Heaps
4
25
12
15
819
2027
43
6
78
14
Consider two leftist heaps …
Task: merge them into a single leftist heap
Merging Leftist Heaps
4
25
12
15
819
2027
43
6
78
14
First, instantiate a Stack
Merging Leftist Heaps
4
25
12
15
819
2027
43
6
78
14
Compare root nodesmerge(x,y)
x y
Merging Leftist Heaps
4
25
12
15
819
2027
43
6
78
14
Remember smaller value
4
x y
Merging Leftist Heaps
4
25
12
15
819
2027
43
6
78
14
Repeat the process with the right child of the smaller value
4
x
y
Merging Leftist Heaps
4
25
12
15
819
2027
43
6
78
14
Remember smaller value
6
4
x
y
Merging Leftist Heaps
4
25
12
15
819
2027
43
6
78
14
Repeat the process with the right child of the smaller value
6
4
x y
Merging Leftist Heaps
4
25
12
15
819
2027
43
6
78
14
Remember smaller value
7
6
4
x y
Merging Leftist Heaps
4
25
12
15
819
2027
43
6
78
14
Repeat the process with the right child of the smaller value
7
6
4
x
y
null
Merging Leftist Heaps
4
25
12
15
819
2027
43
6
78
14
Because one of the arguments is null, return the other argument
7
6
4
x
8
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
7Refers to node 8
Merging Leftist Heaps
4
25
12
15
19
2027
43
6
8
14
Make 7 leftist (by swapping children)
7
6
4
8
8
7Refers to node 8
Merging Leftist Heaps
4
25
12
15
19
2027
43
6
8
14
Return node 7
6
4
7
8
7Refers to node 8
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
7Refers to node 8
Merging Leftist Heaps
4
25
12
15
19
2027
43
6
8
14
Make 6 leftist (it already is)
6
4
7
8
7Refers to node 8
Merging Leftist Heaps
4
25
12
15
19
2027
43
6
8
14
Return node 6
46
8
7Refers to node 8
Merging Leftist Heaps
4
25
12
15
19
2027
43
6
8
14
Make 6 the right child of 4
46
8
7
Merging Leftist Heaps
4
25
12
15
19
2027
43
6
8
14
Make 4 leftist (it already is)
46
8
7
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
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)
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.
Skew HeapsText• 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
Motivation
• Simplify leftist heap by
– not maintaining null path lengths
– swapping children at every merge step
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.value2. 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.value2. X.value ≥ R.value
Merging Skew Heaps
4
25
12
15
819
2027
43
6
78
14
Consider two skew heaps …
Task: merge them into a single skew heap
Merging Skew Heaps
4
25
12
15
819
2027
43
6
78
14
First, instantiate a Stack
Merging Skew Heaps
4
25
12
15
819
2027
43
6
78
14
Compare root nodesmerge(x,y)
x y
Merging Skew Heaps
4
25
12
15
819
2027
43
6
78
14
Remember smaller value
4
x y
Merging Skew Heaps
4
25
12
15
819
2027
43
6
78
14
Repeat the process with the right child of the smaller value
4
x
y
Merging Skew Heaps
4
25
12
15
819
2027
43
6
78
14
Remember smaller value
6
4
x
y
Merging Skew Heaps
4
25
12
15
819
2027
43
6
78
14
Repeat the process with the right child of the smaller value
6
4
x y
Merging Skew Heaps
4
25
12
15
819
2027
43
6
78
14
Remember smaller value
7
6
4
x y
Merging Skew Heaps
4
25
12
15
819
2027
43
6
78
14
Repeat the process with the right child of the smaller value
7
6
4
x
y
null
Merging Skew Heaps
4
25
12
15
819
2027
43
6
78
14
Because one of the arguments is null, return the other argument
7
6
4
x
8
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
7Refers to node 8
Merging Skew Heaps
4
25
12
15
19
2027
43
6
8
14
Swap children of node 7
7
6
4
8
8
7Refers to node 8
Merging Skew Heaps
4
25
12
15
19
2027
43
6
8
14
Return node 7
6
4
7
8
7Refers to node 8
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
7Refers to node 8
Merging Skew Heaps
4
25
12
15
19
2027
43
6
8
14
Swap children of node 6
6
4
7
8
7Refers to node 8
Merging Skew Heaps
4
19
2027
43
Return node 6
46
Refers to node 8
25
12
15
6
8
148
7
Merging Skew Heaps
Make 6 the right child of 4
46
4
19
2027
43
25
12
15
6
8
148
7
Merging Skew Heaps
Swap children of node 4
46
4
19
2027
43
25
12
15
6
8
148
7
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
148
7
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)
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.