Documente Academic
Documente Profesional
Documente Cultură
Rabea Aden
w(NULL) = 0
4 3
2 1 2 0
Null
1 0 0 0 1 0
Null Null Null Null w(NULL) = 0
0 0 0 0
Null Null Null Null
• Tree is unbalanced
• Biased towards left
• Left paths are long, giving the name Leftist Heap
• Rightmost path is the shortest
4 3 4 4*
Leftist Heap Property Violated
w(Left Child) < w(Right Child)
2 1 1 1 2 1 1 2
1 1 1
If X is root
Parent (X) = root
Proof is by Induction
Left Right
Lsize Data Rsize
Pointer Pointer
Header Node +∞ -∞ 0
Bottom Node ∞
4
2 3 1
2 1
1 7 0 0 5 0
1
0 9 0
Bottom Node ∞
• It is a fundamental operation
– Both Insert and DeleteMin are based on Merge
– Insert:
• The key to be inserted is a node
• Merge this node with the given min leftist heap
– DeleteMin
• Delete root, left and right child of root are two min leftist heaps
• Merge the two min leftist heaps
Rsize('3') = 0 0 29 01 20 0 0 23 0 0 19 0 0 17 0
0 29
1 0
1
0 29
1 0
2 2
1 18 1 1 9 1
1 1 1 1
0 29 0 0 25 0 0 14 0 0 12 0
Bottom Node ∞
2 2
1 18 1 1 9 1
1 1 1 1
0 29 0 0 25 0 0 14 0 0 12 0
Bottom Node ∞
2 2
1 9 1 1 18 1
1 1 1 1
0 14 0 0 12 0 0 29 0 0 25 0
Bottom Node ∞
2 2
1 9 1 1 18 1
1 1 1 1
0 14 0 0 12 0 0 29 0 0 25 0
Bottom Node ∞
Header Node ∞ -∞ 3
2 2
1 9 1 1 18 1
1 1 1 1
0 14 0 0 12 0 0 29 0 0 25 0
Bottom Node ∞
Header Node ∞ -∞ 3
2 2
1 9 1 1 18 1
1 1 1 1
0 14 0 0 12 0 0 29 0 0 25 0
Bottom Node ∞
Header Node ∞ -∞ 6
2 2
4 9 1 1 18 1
1 1 1 1
0 14 0 0 12 0 0 29 0 0 25 0
Bottom Node ∞
Header Node ∞ -∞ 6
2 2
1+3=4 4 9 1 1 18 1
1 1 1 1
0 14 0 0 12 0 0 29 0 0 25 0
Bottom Node ∞
Since Lsize(H1) '1' < Rsize(H1) + w(H2) '4' Leftist Property is violated
Header Node ∞ -∞ 7
2 2
4 9 1 1 18 1
1 1 1 1
0 14 0 0 12 0 0 29 0 0 25 0
Bottom Node ∞
Swap children of H1
Header Node ∞ -∞ 6
2 2
4 9 1 1 18 1
1 1 1 1
0 12 0 0 14 0 0 29 0 0 25 0
Bottom Node ∞
Swap children of H1
Header Node ∞ -∞ 7
2 2
4 9 1 1 18 1
1 1 1 1
0 12 0 0 14 0 0 29 0 0 25 0
Bottom Node ∞
Header Node ∞ -∞ 6
2 2
4 9 1 1 18 1
1 1 1 1
0+3=3 3 12 0 0 14 0 0 29 0 0 25 0
Bottom Node ∞
Header Node ∞ -∞ 6
2 2
4 9 1 1 18 1
4 1 1 1
0+3=3 3 12 0 0 14 0 0 29 0 0 25 0
Bottom Node ∞
w(rightChild(H1)) = '4'
NUCES-FAST • Advanced Data Structures • Spring 2007
Merge
Header Node ∞ -∞ 6
2 2
4 9 1 1 18 1
4 1 1 1
3 12 0 0 14 0 0 29 0 0 25 0
Bottom Node ∞
w(rightChild(H1)) = '4'
NUCES-FAST • Advanced Data Structures • Spring 2007
Merge
Header Node ∞ -∞ 6
2 2
4 9 1 1 18 1
4 1 1 1
3 12 0 0 14 0 0 29 0 0 25 0
Bottom Node ∞
H2 becomes leftChild(H1)
NUCES-FAST • Advanced Data Structures • Spring 2007
Merge
Header Node ∞ -∞ 6
2 2
4 9 1 1 18 1
4 1 1 1
3 12 0 0 14 0 0 29 0 0 25 0
Bottom Node ∞
H2 becomes leftChild(H1)
NUCES-FAST • Advanced Data Structures • Spring 2007
Merge
Header Node ∞ -∞ 6
2
4 9 1
1 1
3 12 0 0 14 0
2
1 18 1
1 1
0 29 0 0 25 0
Bottom Node ∞
H2 becomes leftChild(H1)
NUCES-FAST • Advanced Data Structures • Spring 2007
Merge
Header Node ∞ -∞ 6
2
4 9 1
1 1
3 12 0 0 14 0
2
1 18 1
1 1
0 29
1 0 0 25
1 0
Bottom Node ∞
7
3 7 3
3 3
1 18 1 1 9 1
1 1 1 1
0 29 0 0 25 0 0 14 0 0 12 0
Bottom Node ∞
3
3 7 3
2 2
1 18 1 1 9 1
1 1 1 1
0 29 0 0 25 0 0 14 0 0 12 0
Bottom Node ∞
Delete '7'
2 2
1 18 1 1 9 1
1 1 1 1
0 29 0 0 25 0 0 14 0 0 12 0
Bottom Node ∞
2 2
1 18 1 1 9 1
1 1 1 1
0 29 0 0 25 0 0 14 0 0 12 0
Bottom Node ∞
2 2
1 9 1 1 18 1
1 1 1 1
0 14 0 0 12 0 0 29 0 0 25 0
Bottom Node ∞
2 2
1 9 1 1 18 1
1 1 1 1
0 14 0 0 12 0 0 29 0 0 25 0
Bottom Node ∞
Header Node ∞ -∞ 3
2 2
1 9 1 1 18 1
1 1 1 1
0 14 0 0 12 0 0 29 0 0 25 0
Bottom Node ∞
Header Node ∞ -∞ 3
2 2
1 9 1 1 18 1
1 1 1 1
0 14 0 0 12 0 0 29 0 0 25 0
Bottom Node ∞
Header Node ∞ -∞ 6
2 2
4 9 1 1 18 1
1 1 1 1
0 14 0 0 12 0 0 29 0 0 25 0
Bottom Node ∞
Since Lsize(H1) '1' < Rsize(H1) + w(H2) '4' Leftist Property is violated
Header Node ∞ -∞ 6
2 2
1+3=4 4 9 1 1 18 1
1 1 1 1
0 14 0 0 12 0 0 29 0 0 25 0
Bottom Node ∞
Header Node ∞ -∞ 7
2 2
4 9 1 1 18 1
1 1 1 1
0 14 0 0 12 0 0 29 0 0 25 0
Bottom Node ∞
Swap children of H1
Header Node ∞ -∞ 6
2 2
4 9 1 1 18 1
1 1 1 1
0 12 0 0 14 0 0 29 0 0 25 0
Bottom Node ∞
Swap children of H1
Header Node ∞ -∞ 7
2 2
4 9 1 1 18 1
1 1 1 1
0 12 0 0 14 0 0 29 0 0 25 0
Bottom Node ∞
Header Node ∞ -∞ 6
2 2
4 9 1 1 18 1
1 1 1 1
0+3=3 3 12 0 0 14 0 0 29 0 0 25 0
Bottom Node ∞
Header Node ∞ -∞ 6
2 2
4 9 1 1 18 1
4 1 1 1
0+3=3 3 12 0 0 14 0 0 29 0 0 25 0
Bottom Node ∞
w(rightChild(H1)) = '4'
NUCES-FAST • Advanced Data Structures • Spring 2007
DeleteMin
Header Node ∞ -∞ 6
2 2
4 9 1 1 18 1
4 1 1 1
3 12 0 0 14 0 0 29 0 0 25 0
Bottom Node ∞
w(rightChild(H1)) = '4'
NUCES-FAST • Advanced Data Structures • Spring 2007
DeleteMin
Header Node ∞ -∞ 6
2 2
4 9 1 1 18 1
4 1 1 1
3 12 0 0 14 0 0 29 0 0 25 0
Bottom Node ∞
H2 becomes leftChild(H1)
NUCES-FAST • Advanced Data Structures • Spring 2007
DeleteMin
Header Node ∞ -∞ 6
2 2
4 9 1 1 18 1
4 1 1 1
3 12 0 0 14 0 0 29 0 0 25 0
Bottom Node ∞
H2 becomes leftChild(H1)
NUCES-FAST • Advanced Data Structures • Spring 2007
DeleteMin
Header Node ∞ -∞ 6
2
4 9 1
1 1
3 12 0 0 14 0
2
1 18 1
1 1
0 29 0 0 25 0
Bottom Node ∞
H2 becomes leftChild(H1)
NUCES-FAST • Advanced Data Structures • Spring 2007
DeleteMin
Header Node ∞ -∞ 6
2
4 9 1
1 1
3 12 0 0 14 0
2
1 18 1
1 1
0 29
1 0 0 25
1 0
Bottom Node ∞