100% found this document useful (2 votes)
249 views

Leftist Skew Heaps

This document provides information about leftist heaps and skew heaps. Leftist heaps are binary trees that satisfy three properties: 1) a node's value is less than its children's values, 2) the null path length of the left child is greater than or equal to the right child, and 3) nodes are rearranged during insertion to maintain the null path length property. Skew heaps simplify leftist heaps by not tracking null path lengths and always swapping children during merging. Both support O(log n) time insertion, deletion, and merging by using a single merge operation.

Uploaded by

Keyan Monadjem
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
100% found this document useful (2 votes)
249 views

Leftist Skew Heaps

This document provides information about leftist heaps and skew heaps. Leftist heaps are binary trees that satisfy three properties: 1) a node's value is less than its children's values, 2) the null path length of the left child is greater than or equal to the right child, and 3) nodes are rearranged during insertion to maintain the null path length property. Skew heaps simplify leftist heaps by not tracking null path lengths and always swapping children during merging. Both support O(log n) time insertion, deletion, and merging by using a single merge operation.

Uploaded by

Keyan Monadjem
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 52

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

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 following 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.

Example: Null Path Length


4
8

19

12

27

15

25

20

43

node

19

12

15

25

27

20

43

npl

Example: Null Path Length


4
8
12
15

27

19

0
What is the npl of the
right child of 8?

25

43

20

What are the npls of


the children of 20 and
the right child of 27?

node

19

12

15

25

27

20

43

npl

Example: Null Path Length


4
8
12
15

node 4 violates leftist heap property


fix by swapping children

19

27

25

43

20

node

19

12

15

25

27

20

43

npl

Leftist Heap
4
19
27
43

20

12

15

25

node

19

12

15

25

27

20

43

npl

Merging Leftist Heaps


Consider two leftist heaps
4

6
8

19
27
43

12

20
15

8
14

25

Task: merge them into a single leftist heap

Merging Leftist Heaps


4

6
8

19
27
43

12

20
15

14
25

First, instantiate a Stack

Merging Leftist Heaps


x

6
8

19
27
43

12

20
15

14
25

Compare root nodes


merge(x,y)

Merging Leftist Heaps


x

6
8

19
27
43

12

20
15

14
25

Remember smaller value

Merging Leftist Heaps


y
4
8

19
27
43

x
12

20
15

14
25

Repeat the process with the right


child of the smaller value

Merging Leftist Heaps


y
4
8

19
27
43

x
12

20
15

14
25

6
4

Remember smaller value

Merging Leftist Heaps


4
8

19
27
43

x
12

20
15

y
7

14
25

6
4

Repeat the process with the right


child of the smaller value

Merging Leftist Heaps


4
8

19
27
43

x
12

20
15

y
7

14
25

7
6
4

Remember smaller value

Merging Leftist Heaps


4
8

19
27
43

x
12

20
15

8
14

25

y
null
7
6
4

Repeat the process with the right


child of the smaller value

Merging Leftist Heaps


4
8

19
27
43

x
12

20
15

14
25

7
6
4

Because one of the arguments is


null, return the other argument

Merging Leftist Heaps


4
19
27

6
8

Refers to node 8
20

7
8

14
12

43
15

25

8
7
6
4

Make 8 the right child of 7

Merging Leftist Heaps


4
19
27

6
8

Refers to node 8
20

7
8

14
12

43
15

25

8
7
6
4

Make 7 leftist (by swapping children)

Merging Leftist Heaps


4
19
27

6
8

Refers to node 8
20

7
8

14
12

43
15

25

Return node 7

Merging Leftist Heaps


4
19
27

6
8

Refers to node 8
20

7
8

14
12

43
15

25

Make 7 the right child of 6


(which it already is)

Merging Leftist Heaps


4
19
27

6
8

Refers to node 8
20

7
8

14
12

43
15

25

Make 6 leftist (it already is)

Merging Leftist Heaps


4
19
27

6
8

Refers to node 8
20

7
8

14
12

43
15

25

Return node 6

Merging Leftist Heaps


4
6

19
27
43

20

7
8

14
12
15

25

Make 6 the right child of 4

Merging Leftist Heaps


4
6

19
27
43

20

7
8

14
12
15

25

Make 4 leftist (it already is)

Final Leftist Heap


4
6

19
27
43

20

7
8

14
12
15

25

Verify that the tree is heap


Verify that the heap is leftist

Return node 4

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 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

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.
2.

X.value L.value
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.
2.

X.value L.value
X.value R.value

Merging Skew Heaps


Consider two skew heaps
4

6
8

19
27
43

12

20
15

8
14

25

Task: merge them into a single skew heap

Merging Skew Heaps


4

6
8

19
27
43

12

20
15

14
25

First, instantiate a Stack

Merging Skew Heaps


x

6
8

19
27
43

12

20
15

14
25

Compare root nodes


merge(x,y)

Merging Skew Heaps


x

6
8

19
27
43

12

20
15

14
25

Remember smaller value

Merging Skew Heaps


y
4
8

19
27
43

x
12

20
15

14
25

Repeat the process with the right


child of the smaller value

Merging Skew Heaps


y
4
8

19
27
43

x
12

20
15

14
25

6
4

Remember smaller value

Merging Skew Heaps


4
8

19
27
43

x
12

20
15

y
7

14
25

6
4

Repeat the process with the right


child of the smaller value

Merging Skew Heaps


4
8

19
27
43

x
12

20
15

y
7

14
25

7
6
4

Remember smaller value

Merging Skew Heaps


4
8

19
27
43

x
12

20
15

8
14

25

y
null
7
6
4

Repeat the process with the right


child of the smaller value

Merging Skew Heaps


4
8

19
27
43

x
12

20
15

14
25

7
6
4

Because one of the arguments is


null, return the other argument

Merging Skew Heaps


4
19
27

6
8

Refers to node 8
20

7
8

14
12

43
15

25

8
7
6
4

Make 8 the right child of 7

Merging Skew Heaps


4
19
27

6
8

Refers to node 8
20

7
8

14
12

43
15

25

8
7
6
4

Swap children of node 7

Merging Skew Heaps


4
19
27

6
8

Refers to node 8
20

7
8

14
12

43
15

25

Return node 7

Merging Skew Heaps


4
19
27

6
8

Refers to node 8
20

7
8

14
12

43
15

25

Make 7 the right child of 6


(which it already is)

Merging Skew Heaps


4
19
27

6
7

Refers to node 8
8

20

8
14

12

43
15

25

Swap children of node 6

Merging Skew Heaps


4
19
27

6
7

Refers to node 8
8

20

8
14

12

43
15

25

Return node 6

Merging Skew Heaps


4
6

19
27

20
8

43

8
14

12
15

25

Make 6 the right child of 4

Merging Skew Heaps


4
19

6
7
8

27

8
14

20

43

12
15

25

Swap children of node 4

Final Skew Heap


4
19

6
7
8

27

8
14

20

43

12
15

25

Verify that the tree is heap


Verify that the heap is skew

Return node 4

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.

You might also like