0% found this document useful (0 votes)
23 views37 pages

Lecture 10.2

Uploaded by

khaledprince2011
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
23 views37 pages

Lecture 10.2

Uploaded by

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

Heap

Course Code: CSC 2106 Course Title: Data Structure (Theory)

Dept. of Computer Science


Faculty of Science and Technology

Lecture No: 10.2 Week No: 10 Semester:


Lecturer: Email:
Lecture Outline

1. Heap
2. Heap Types
3. Heap as an Array
4. Array Representation of Max Heaps
5. Operations on Heap
Heap

A heap is a binary tree with the following conditions:

 It is essentially complete: all its levels are full, except last


level where only some rightmost leaves may be missing

 The key at each node is ≥ keys at its children


Heap
Def: A heap is a complete binary tree with the following two properties:
Structural property: all levels are full, except possibly the last one, which is
filled from left to right
Order (heap) property: for any node x
Parent(x) ≥ x
8

7
It doesn‘t matter that 4 in
4
level 1 is smaller than 5 in
5 2
level 2
Heap (top to bottom and left to right)
Heap Example

10 10 10

5 7 5 7 5 7

4 2 1 2 1 6 2 1

A heap Not a heap Not a heap

Note: Heap’s elements are ordered top down (along any path down
from its root), but they are not ordered from left to right
Heap Types

 Max-heaps (largest element at root), have the max-heap


property:
 for all nodes, excluding the root:

PARENT ≥ child
 Min-heaps (smallest element at root), have the min-heap
property:
 for all nodes , excluding the root:

PARENT ≤ child
Heap Types (Example)

7 1

5 5 2 5

4 2 4 3 4 5 6 7

Max-heaps Min-heaps
Heap as an array

Parent left Child right Child


index index index
i 2i+1 2i+2

(i-1)/2 i
Array Representation of Max Heaps

A heap is a complete binary tree that is


filled in order
0
When index i is from 0 to n-1 and
16
number of element = length of A[]= n and
n= 10
1 2
Root of tree is A[0] = 16
14 10
Left child of A[i] = A[2i+1]
3 4 5 6
Right child of A[i] = A[2i + 2]
8 7 9 3
Parent of A[i] = A[ (i-1)/2 ] 7 8 9
Heapsize[A] ≤ length[A] 2 4 1
Array Representation of Max Heaps

0 The elements in A[n/2]…..A[n-1]


16 are leaves
i.e. A[5] to A[9]

1 2
 Parents are A[0]………..A[n/2-1]
14 10  i.e. A[0] to A[4]
3 4 5 6
8 7 9 3  The root have the maximum element of
7 8 9
the heap
2 4 1 i.e. A[0]=16
Operations on Heaps
Maintaining the Heap Property
Maintaining the Heap Property

When:
 Left and Right subtrees of i are
max-heaps and
 A[i] breaks the heap
property.
 A[i] may be smaller than its
children
MAX-HEAPIFY(A, i, n)

1. LEFT_child = 2i+1
2. RIGHT_child =2i+2
3. If LEFT_child < n and A[LEFT_child] > A[i]
4. then largest_index = LEFT_child
5. else largest_index = i
6. If RIGHT_child < n and A[RIGHT_child] > A[largest_index]
7. then largest_index = RIGHT_child
8. if largest_index ≠i
9. then exchange A[i] ↔ A[largest_index]
10. MAX-HEAPIFY(A, largest_index, n)
Initializing A Max Heap

14 7

2 8 1

Find the position (home) for 4.


Initializing A Max Heap

14

4 7

2 8 1

Again find the position (home) for 4.


Initializing A Max Heap

14

8 7

2 4 1

Done
Building a Heap
 Convert an array A[0…n-1] into a
max-heap 0

when, 4

n = length of A[] = 1 2
number of element 1 3
 The elements in the sub-array 3 4 5 6

A[n/2] …… A[n-1] are leaves 2 16 9 10


7 9
 Apply MAX-HEAPIFY on elements 8
14 8 7
among A[(n/2-1)] to A[0]
4 1 3 2 16 9 10 14 8 7
A:
Building a Heap

Alg: BUILD-MAX-HEAP(A)
0

1. n = length of A[] 4

2. for i = n/2-1 down to 0 1 2


1 3
3. do MAX-HEAPIFY(A, i, n) 3 4 5 6
2 16 9 10
7 8 9

14 8 7

A: 4 1 3 2 16 9 10 14 8 7
Building A Max Heap
1

2 3

4 5 6 7

8 9 7
10 11
8

input array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] and n=11


Building A Max Heap

2 3

4 5 6 7

8 9 7
10 11
8

Start at rightmost node that has a child i.e. last parent


Index is (n/2-1)
Building A Max Heap

2 3

4 11 6 7

8 9 7
10 85

 Move to next lower array position. Repeat it up to


root.
Building A Max Heap

2 3

4 11 6 7

8 9 7
10 85

Find home for 4.


Building A Max Heap

2 3

9 11 6 7

8 4 7
10 85

Done, move to next lower array position.


Building A Max Heap

2 3

9 11 6 7

8 4 7
10 85

Find home for 3.


Building A Max Heap

2 7

9 11 6 3

8 4 7
10 85

Done, move to next lower array position.


Building A Max Heap

2 7

9 11 6 3

8 4 7
10 85

Find a home for 2.


Building A Max Heap

11 7

9 2 6 3

8 4 7
10 85

Find a home for 2.


Building A Max Heap

11 7

9 10 6 3

8 4 28 75

Done, move to next lower array position.


Building A Max Heap

11 7

9 10 6 3

8 4 72 8
5

Find home for 1.


Building A Max Heap

11

1 7

9 10 6 3

8 4 72 8
5

Find home for 1.


Building A Max Heap

11

10 7

9 1 6 3

8 4 72 8
5

Find home for 1.


Building A Max Heap

11

10 7

9 5 6 3

8 4 72 8
1

Done
Exercise

1. Arrange this array as a heap tree/Array?

Input Array 5 4 9 7 19 8 17 2 6 5 21

Output Array/
21 19 17 7 5 8 9 2 6 5 4
Heap Array
Exercise

1. Arrange this array as a heap tree/Array?

1 2

4 9
3 4 5 6

7
7 8 9
19 8 17

2 6 5 21
Books

 “Schaum's Outline of Data Structures with C++”. By John R. Hubbard (Can be


found in university Library)
 “Data Structures and Program Design”, Robert L. Kruse, 3rd Edition, 1996.
 “Data structures, algorithms and performance”, D. Wood, Addison-Wesley, 1993
 “Advanced Data Structures”, Peter Brass, Cambridge University Press, 2008
 “Data Structures and Algorithm Analysis”, Edition 3.2 (C++ Version), Clifford A.
Shaffer, Virginia Tech, Blacksburg, VA 24061 January 2, 2012
 “C++ Data Structures”, Nell Dale and David Teague, Jones and Bartlett Publishers,
2001.
 “Data Structures and Algorithms with Object-Oriented Design Patterns in C++”,
Bruno R. Preiss,
References

1. https://en.wikipedia.org/wiki/Data_structure

You might also like