Presentation is loading. Please wait.

Presentation is loading. Please wait.

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.

Similar presentations


Presentation on theme: "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."— Presentation transcript:

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.


Download ppt "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."

Similar presentations


Ads by Google