Tree Representation HEAP 1 Sequential Representation of Trees

  • Slides: 61
Download presentation
Tree Representation HEAP 1

Tree Representation HEAP 1

Sequential Representation of Trees • There are three methods of representing a binary tree

Sequential Representation of Trees • There are three methods of representing a binary tree using array representation. 1. Using index values to represent edges: class Node { Data elt; int left; int right; } Node; Node[] Binary. Tree[Tree. Size]; 2

Method 1: Example A B C D E G I Index 1 2 3

Method 1: Example A B C D E G I Index 1 2 3 Element A B C Left 2 4 0 Right 3 6 0 4 5 6 7 D I E G 0 0 7 5 0 0 3

Method 2 2. Store the nodes in one of the natural traversals: class Node

Method 2 2. Store the nodes in one of the natural traversals: class Node { Data boolean elt; left; right; }; Node[] Binary. Tree[Tree. Size]; 4

Method 2: Example A B C D E G I Index 1 2 3

Method 2: Example A B C D E G I Index 1 2 3 Element A B D Left T T F Right T T F 4 5 6 7 E G I C T T F F F Elements stored in Pre-Order traversal 5

Method 3 3. Store the nodes in fixed positions: (i) root goes into first

Method 3 3. Store the nodes in fixed positions: (i) root goes into first index, (ii) in general left child of tree[i] is stored in tree[2 i] and right child in tree[2 i+1]. 6

Method 3: Example root goes into first index Left = [2 i] right =

Method 3: Example root goes into first index Left = [2 i] right = [2 i+1]. A B C D E - - G - 1 2 3 4 5 6 7 8 9 10 11 12 G 7

Heaps • A heap is a binary tree. • A heap is best implemented

Heaps • A heap is a binary tree. • A heap is best implemented in sequential representation (using an array). • Two important uses of heaps are: – (i) efficient implementation of priority queues – (ii) sorting -- Heapsort. 8

 • "complete tree" -- a complete tree is one in which there are

• "complete tree" -- a complete tree is one in which there are no gaps between leaves. For instance, a tree with a root node that has only one child must have its child as the left node. More precisely, a complete tree is one that has every level filled in before adding a node to the next level, and one that has the nodes in a given level filled in from left to right, with no breaks. 9

10

10

A Heap 10 30 40 52 Any node’s key value is less than its

A Heap 10 30 40 52 Any node’s key value is less than its children’s. 20 50 25 55 42 11

Heaps • Heaps are represented sequentially using the third method. • Heap is a

Heaps • Heaps are represented sequentially using the third method. • Heap is a complete binary tree: shortest-path length tree with nodes on the lowest level in their leftmost positions. • Complete Binary Tree: let h be the height of the heap – for i = 0, … , h - 1, there are 2 i nodes of depth i – at depth h - 1, the internal nodes are to the left of the external nodes 12

Heaps (Cont. ) • Max-Heap has max element as root. Min. Heap has min

Heaps (Cont. ) • Max-Heap has max element as root. Min. Heap has min element as root. • The elements in a heap satisfy heap conditions: for Min-Heap: key[parent] < key[left-child] or key[right-child]. • The last node of a heap is the rightmost node 2 of maximum depth 5 9 6 7 last node 13

Heap: An example [1] [2] [3] [4] 10 20 25 30 10 30 20

Heap: An example [1] [2] [3] [4] 10 20 25 30 10 30 20 40 10 40 20 50 [5] 40 42 50 [6] [7] All the three arrangements satisfy min heap conditions [8] [9] 40 42 50 52 55 50 25 55 52 42 42 30 25 52 55 10 20 30 52 55 25 14

Heap: An example [1] [2] [3] [4] 10 20 25 30 10 30 20

Heap: An example [1] [2] [3] [4] 10 20 25 30 10 30 20 40 10 40 20 50 [5] 50 25 55 [6] [7] All the three arrangements satisfy min heap conditions [8] [9] 40 42 50 52 55 50 25 55 52 42 42 30 25 52 55 10 30 40 52 42 20 15

Heap: An example [1] [2] [3] [4] 10 20 25 30 10 30 20

Heap: An example [1] [2] [3] [4] 10 20 25 30 10 30 20 40 10 40 20 50 [5] 42 30 25 [6] [7] All the three arrangements satisfy min heap conditions [8] [9] 40 42 50 52 55 50 25 55 52 42 42 30 25 52 55 10 40 50 52 55 20 16

Constructing Heaps • There are two methods of constructing heaps: – Using Sift. Down

Constructing Heaps • There are two methods of constructing heaps: – Using Sift. Down operation. – Using Sift. Up operation. • Sift. Down operation inserts a new element into the Heap from the top. • Sift. Up operation inserts a new element into the Heap from the bottom. 17

ADT Heap Elements: The elements are called Heap. Elements. Structure: The elements of the

ADT Heap Elements: The elements are called Heap. Elements. Structure: The elements of the heap satisfy the heap conditions. Domain: Bounded. Type name: Heap. 18

ADT Heap Operations: 1. Method Sift. Up (int n) requires: Elements H[1], H[2], …,

ADT Heap Operations: 1. Method Sift. Up (int n) requires: Elements H[1], H[2], …, H[n-1] satisfy heap conditions. results: Elements H[1], H[2], …, H[n] satisfy heap conditions. 2. Method Sift. Down (int m, n) requires: Elements H[m+1], H[m+2], …, H[n] satisfy the heap conditions. results: Elements H[m], H[m+1], …, H[n] satisfy the heap conditions. 3. Method Heap (int n) // Constructor results: Elements H[1], H[2], …. H[n] satisfy the heap conditions. 19

ADT Heap: Element public class Heap. Element<T> { T data; Priority p; public Heap.

ADT Heap: Element public class Heap. Element<T> { T data; Priority p; public Heap. Element(T e, Priority pty) { data = e; p = pty; } // Setters/Getters. . . } 20

Insertion into a Heap • Method insert. Item of the priority queue ADT corresponds

Insertion into a Heap • Method insert. Item of the priority queue ADT corresponds to the insertion of a key k to the heap • The insertion algorithm consists of three steps – Find the insertion node z (the new last node) – Store k at z – Restore the heap-order property (discussed next) © 2010 Goodrich, Tamassia Heaps 21

Upheap • After the insertion of a new key k, the heap-order property may

Upheap • After the insertion of a new key k, the heap-order property may be violated • Algorithm upheap restores the heap-order property by swapping k along an upward path from the insertion node • Upheap terminates when the key k reaches the root or a node whose parent has a key smaller than or equal to k • Since a heap has height O(log n), upheap runs in O(log n) time 2 5 9 z 6 7 insertion node © 2010 Goodrich, Tamassia Heaps 22

Upheap • After the insertion of a new key k, the heap-order property may

Upheap • After the insertion of a new key k, the heap-order property may be violated • Algorithm upheap restores the heap-order property by swapping k along an upward path from the insertion node • Upheap terminates when the key k reaches the root or a node whose parent has a key smaller than or equal to k • Since a heap has height O(log n), upheap runs in O(log n) time 2 5 9 © 2010 Goodrich, Tamassia 6 7 Heaps 1 23

Upheap • After the insertion of a new key k, the heap-order property may

Upheap • After the insertion of a new key k, the heap-order property may be violated • Algorithm upheap restores the heap-order property by swapping k along an upward path from the insertion node • Upheap terminates when the key k reaches the root or a node whose parent has a key smaller than or equal to k • Since a heap has height O(log n), upheap runs in O(log n) time 2 5 9 © 2010 Goodrich, Tamassia 1 7 Heaps 6 24

Upheap • After the insertion of a new key k, the heap-order property may

Upheap • After the insertion of a new key k, the heap-order property may be violated • Algorithm upheap restores the heap-order property by swapping k along an upward path from the insertion node • Upheap terminates when the key k reaches the root or a node whose parent has a key smaller than or equal to k • Since a heap has height O(log n), upheap runs in O(log n) time 1 5 9 © 2010 Goodrich, Tamassia 2 7 Heaps 6 25

Upheap • After the insertion of a new key k, the heap-order property may

Upheap • After the insertion of a new key k, the heap-order property may be violated • Algorithm upheap restores the heap-order property by swapping k along an upward path from the insertion node • Upheap terminates when the key k reaches the root or a node whose parent has a key smaller than or equal to k • Since a heap has height O(log n), upheap runs in O(log n) time 1 5 9 2 7 z 6 insertion node © 2010 Goodrich, Tamassia Heaps 26

Upheap • After the insertion of a new key k, the heap-order property may

Upheap • After the insertion of a new key k, the heap-order property may be violated • Algorithm upheap restores the heap-order property by swapping k along an upward path from the insertion node • Upheap terminates when the key k reaches the root or a node whose parent has a key smaller than or equal to k • Since a heap has height O(log n), upheap runs in O(log n) time 1 5 9 © 2010 Goodrich, Tamassia 2 7 Heaps 6 10 27

Upheap • After the insertion of a new key k, the heap-order property may

Upheap • After the insertion of a new key k, the heap-order property may be violated • Algorithm upheap restores the heap-order property by swapping k along an upward path from the insertion node • Upheap terminates when the key k reaches the root or a node whose parent has a key smaller than or equal to k • Since a heap has height O(log n), upheap runs in O(log n) time 1 5 z © 2010 Goodrich, Tamassia 9 insertion node 2 7 Heaps 6 10 28

Upheap • After the insertion of a new key k, the heap-order property may

Upheap • After the insertion of a new key k, the heap-order property may be violated • Algorithm upheap restores the heap-order property by swapping k along an upward path from the insertion node • Upheap terminates when the key k reaches the root or a node whose parent has a key smaller than or equal to k • Since a heap has height O(log n), upheap runs in O(log n) time 1 5 9 2 7 6 10 4 © 2010 Goodrich, Tamassia Heaps 29

Upheap • After the insertion of a new key k, the heap-order property may

Upheap • After the insertion of a new key k, the heap-order property may be violated • Algorithm upheap restores the heap-order property by swapping k along an upward path from the insertion node • Upheap terminates when the key k reaches the root or a node whose parent has a key smaller than or equal to k • Since a heap has height O(log n), upheap runs in O(log n) time 1 5 4 2 7 6 10 9 © 2010 Goodrich, Tamassia Heaps 30

Upheap • After the insertion of a new key k, the heap-order property may

Upheap • After the insertion of a new key k, the heap-order property may be violated • Algorithm upheap restores the heap-order property by swapping k along an upward path from the insertion node • Upheap terminates when the key k reaches the root or a node whose parent has a key smaller than or equal to k • Since a heap has height O(log n), upheap runs in O(log n) time 1 4 5 2 7 6 10 9 © 2010 Goodrich, Tamassia Heaps 31

Removal from a Heap (§ 7. 3. 3) • Method remove. Min of the

Removal from a Heap (§ 7. 3. 3) • Method remove. Min of the priority queue ADT corresponds to the removal of the root key from the heap • The removal algorithm consists of three steps – Replace the root key with the key of the last node w – Remove w – Restore the heap-order property (discussed next) © 2010 Goodrich, Tamassia Heaps 2 5 9 w 6 7 last node 7 5 w 6 9 new last node 32

Downheap • After replacing the root key with the key k of the last

Downheap • After replacing the root key with the key k of the last node, the heaporder property may be violated • Algorithm downheap restores the heap-order property by swapping key k along a downward path from the root • Upheap terminates when key k reaches a leaf or a node whose children have keys greater than or equal to k • Since a heap has height O(log n), downheap runs in O(log n) time 2 5 9 6 w 7 last node © 2010 Goodrich, Tamassia Heaps 33

Downheap • After replacing the root key with the key k of the last

Downheap • After replacing the root key with the key k of the last node, the heaporder property may be violated • Algorithm downheap restores the heap-order property by swapping key k along a downward path from the root • Upheap terminates when key k reaches a leaf or a node whose children have keys greater than or equal to k • Since a heap has height O(log n), downheap runs in O(log n) time 7 5 9 6 w 7 last node © 2010 Goodrich, Tamassia Heaps 34

Downheap • After replacing the root key with the key k of the last

Downheap • After replacing the root key with the key k of the last node, the heaporder property may be violated • Algorithm downheap restores the heap-order property by swapping key k along a downward path from the root • Upheap terminates when key k reaches a leaf or a node whose children have keys greater than or equal to k • Since a heap has height O(log n), downheap runs in O(log n) time 7 5 6 w 9 delete last node © 2010 Goodrich, Tamassia Heaps 35

Downheap • After replacing the root key with the key k of the last

Downheap • After replacing the root key with the key k of the last node, the heaporder property may be violated • Algorithm downheap restores the heap-order property by swapping key k along a downward path from the root • Upheap terminates when key k reaches a leaf or a node whose children have keys greater than or equal to k • Since a heap has height O(log n), downheap runs in O(log n) time 7 5 6 9 Down. Heap/Sift. Down © 2010 Goodrich, Tamassia Heaps 36

Downheap • After replacing the root key with the key k of the last

Downheap • After replacing the root key with the key k of the last node, the heaporder property may be violated • Algorithm downheap restores the heap-order property by swapping key k along a downward path from the root • Upheap terminates when key k reaches a leaf or a node whose children have keys greater than or equal to k • Since a heap has height O(log n), downheap runs in O(log n) time 5 7 6 9 © 2010 Goodrich, Tamassia Heaps 37

Downheap • After replacing the root key with the key k of the last

Downheap • After replacing the root key with the key k of the last node, the heaporder property may be violated • Algorithm downheap restores the heap-order property by swapping key k along a downward path from the root • Upheap terminates when key k reaches a leaf or a node whose children have keys greater than or equal to k • Since a heap has height O(log n), downheap runs in O(log n) time 5 7 w 6 9 last node © 2010 Goodrich, Tamassia Heaps 38

Downheap • After replacing the root key with the key k of the last

Downheap • After replacing the root key with the key k of the last node, the heaporder property may be violated • Algorithm downheap restores the heap-order property by swapping key k along a downward path from the root • Upheap terminates when key k reaches a leaf or a node whose children have keys greater than or equal to k • Since a heap has height O(log n), downheap runs in O(log n) time 9 7 w 6 9 last node © 2010 Goodrich, Tamassia Heaps 39

Downheap • After replacing the root key with the key k of the last

Downheap • After replacing the root key with the key k of the last node, the heaporder property may be violated • Algorithm downheap restores the heap-order property by swapping key k along a downward path from the root • Upheap terminates when key k reaches a leaf or a node whose children have keys greater than or equal to k • Since a heap has height O(log n), downheap runs in O(log n) time 9 w 7 6 delete last node © 2010 Goodrich, Tamassia Heaps 40

Downheap • After replacing the root key with the key k of the last

Downheap • After replacing the root key with the key k of the last node, the heaporder property may be violated • Algorithm downheap restores the heap-order property by swapping key k along a downward path from the root • Upheap terminates when key k reaches a leaf or a node whose children have keys greater than or equal to k • Since a heap has height O(log n), downheap runs in O(log n) time 9 7 6 Down. Heap/Sift. Down © 2010 Goodrich, Tamassia Heaps 41

Downheap • After replacing the root key with the key k of the last

Downheap • After replacing the root key with the key k of the last node, the heaporder property may be violated • Algorithm downheap restores the heap-order property by swapping key k along a downward path from the root • Upheap terminates when key k reaches a leaf or a node whose children have keys greater than or equal to k • Since a heap has height O(log n), downheap runs in O(log n) time 6 7 © 2010 Goodrich, Tamassia 9 Heaps 42

Downheap • After replacing the root key with the key k of the last

Downheap • After replacing the root key with the key k of the last node, the heaporder property may be violated • Algorithm downheap restores the heap-order property by swapping key k along a downward path from the root • Upheap terminates when key k reaches a leaf or a node whose children have keys greater than or equal to k • Since a heap has height O(log n), downheap runs in O(log n) time 6 w 7 9 last node © 2010 Goodrich, Tamassia Heaps 43

Downheap • After replacing the root key with the key k of the last

Downheap • After replacing the root key with the key k of the last node, the heaporder property may be violated • Algorithm downheap restores the heap-order property by swapping key k along a downward path from the root • Upheap terminates when key k reaches a leaf or a node whose children have keys greater than or equal to k • Since a heap has height O(log n), downheap runs in O(log n) time 9 w 7 9 last node © 2010 Goodrich, Tamassia Heaps 44

Downheap • After replacing the root key with the key k of the last

Downheap • After replacing the root key with the key k of the last node, the heaporder property may be violated • Algorithm downheap restores the heap-order property by swapping key k along a downward path from the root • Upheap terminates when key k reaches a leaf or a node whose children have keys greater than or equal to k • Since a heap has height O(log n), downheap runs in O(log n) time 9 w 7 delete last node © 2010 Goodrich, Tamassia Heaps 45

Downheap • After replacing the root key with the key k of the last

Downheap • After replacing the root key with the key k of the last node, the heaporder property may be violated • Algorithm downheap restores the heap-order property by swapping key k along a downward path from the root • Upheap terminates when key k reaches a leaf or a node whose children have keys greater than or equal to k • Since a heap has height O(log n), downheap runs in O(log n) time 9 7 Down. Heap/Sift. Down © 2010 Goodrich, Tamassia Heaps 46

Downheap • After replacing the root key with the key k of the last

Downheap • After replacing the root key with the key k of the last node, the heaporder property may be violated • Algorithm downheap restores the heap-order property by swapping key k along a downward path from the root • Upheap terminates when key k reaches a leaf or a node whose children have keys greater than or equal to k • Since a heap has height O(log n), downheap runs in O(log n) time 7 9 © 2010 Goodrich, Tamassia Heaps 47

Updating the Last Node • The insertion node can be found by traversing a

Updating the Last Node • The insertion node can be found by traversing a path of O(log n) nodes – Go up until a left child or the root is reached – If a left child is reached, go to the right child – Go down left until a leaf is reached • Similar algorithm for updating the last node after a removal © 2010 Goodrich, Tamassia Heaps 48

Heap-Sort • Consider a priority queue with n items implemented by means of a

Heap-Sort • Consider a priority queue with n items implemented by means of a heap – the space used is O(n) – methods insert and remove. Min take O(log n) time – methods size, is. Empty, and min take time O(1) time © 2010 Goodrich, Tamassia • Using a heap-based priority queue, we can sort a sequence of n elements in O(n log n) time • The resulting algorithm is called heap-sort • Heap-sort is much faster than quadratic sorting algorithms, such as insertion-sort and selection -sort Heaps 49

Vector-based Heap Implementation • We can represent a heap with n keys by means

Vector-based Heap Implementation • We can represent a heap with n keys by means of a vector of length n + 1 • For the node at rank i – the left child is at rank 2 i – the right child is at rank 2 i + 1 • Links between nodes are not explicitly stored • The cell of at rank 0 is not used • Operation insert corresponds to inserting at rank n + 1 • Operation remove. Min corresponds to removing at rank n • Yields in-place heap-sort © 2010 Goodrich, Tamassia Heaps 2 5 6 9 0 7 2 5 6 9 7 1 2 3 4 5 50

Bottom-up Heap Construction • We can construct a heap storing n given keys in

Bottom-up Heap Construction • We can construct a heap storing n given keys in using a bottom-up construction with log n phases • In phase i, pairs of heaps with 2 i -1 keys are merged into heaps with 2 i+1 -1 keys 2 i -1 2 i+1 -1 © 2010 Goodrich, Tamassia Heaps 51

Example 16 15 4 25 16 12 6 5 15 © 2010 Goodrich, Tamassia

Example 16 15 4 25 16 12 6 5 15 © 2010 Goodrich, Tamassia 4 7 23 11 12 6 Heaps 20 27 7 23 20 52

Example (contd. ) 25 16 5 15 4 15 16 11 12 6 4

Example (contd. ) 25 16 5 15 4 15 16 11 12 6 4 25 © 2010 Goodrich, Tamassia 5 27 9 23 6 12 11 Heaps 20 23 9 27 20 53

Example (contd. ) 7 8 15 16 4 25 5 6 12 11 23

Example (contd. ) 7 8 15 16 4 25 5 6 12 11 23 9 4 5 25 © 2010 Goodrich, Tamassia 20 6 15 16 27 7 8 12 11 Heaps 23 9 27 20 54

Example (end) 10 4 6 15 16 5 25 7 8 12 11 23

Example (end) 10 4 6 15 16 5 25 7 8 12 11 23 9 27 20 4 5 6 15 16 7 25 © 2010 Goodrich, Tamassia 10 8 12 11 Heaps 23 9 27 20 55

Merging Two Heaps • We are given two heaps and a key k •

Merging Two Heaps • We are given two heaps and a key k • We create a new heap with the root node storing k and with the two heaps as subtrees • We perform downheap to restore the heap-order property © 2010 Goodrich, Tamassia Heaps 3 8 2 5 4 6 56

Merging Two Heaps • We are given two heaps and a key k •

Merging Two Heaps • We are given two heaps and a key k • We create a new heap with the root node storing k and with the two heaps as subtrees • We perform downheap to restore the heap-order property © 2010 Goodrich, Tamassia Heaps k 7 3 8 2 5 4 6 57

Merging Two Heaps • We are given two heaps and a key k •

Merging Two Heaps • We are given two heaps and a key k • We create a new heap with the root node storing k and with the two heaps as subtrees • We perform downheap to restore the heap-order property © 2010 Goodrich, Tamassia Heaps k 7 3 8 2 5 4 6 Merge 58

Merging Two Heaps • We are given two heaps and a key k •

Merging Two Heaps • We are given two heaps and a key k • We create a new heap with the root node storing k and with the two heaps as subtrees • We perform downheap to restore the heap-order property © 2010 Goodrich, Tamassia Heaps 7 3 8 2 5 4 6 Downheap/Sift. Down 59

Merging Two Heaps • We are given two heaps and a key k •

Merging Two Heaps • We are given two heaps and a key k • We create a new heap with the root node storing k and with the two heaps as subtrees • We perform downheap to restore the heap-order property © 2010 Goodrich, Tamassia Heaps 2 3 8 7 5 4 6 Downheap/Sift. Down 60

Merging Two Heaps • We are given two heaps and a key k •

Merging Two Heaps • We are given two heaps and a key k • We create a new heap with the root node storing k and with the two heaps as subtrees • We perform downheap to restore the heap-order property © 2010 Goodrich, Tamassia Heaps 2 3 8 4 5 7 6 Downheap/Sift. Down 61