Binary Heaps

Binary Heaps

Binary Heaps CSE 373 Data Structures Readings • Chapter 8 › Section 8.3 Binary Heaps 2 BST implementation of a Priority Queue • Worst case (degenerate tree) › FindMin, DeleteMin and Insert (k) are all O(n) • Best case (completely balanced BST) › FindMin, DeleteMin and Insert (k) are all O(logn) • Balanced BSTs (next topic after heaps) › FindMin, DeleteMin and Insert (k) are all O(logn) Binary Heaps 3 Better than a speeding BST • We can do better than Balanced Binary Search Trees? › Very limited requirements: Insert, FindMin, DeleteMin. The goals are: › FindMin is O(1) › Insert is O(log N) › DeleteMin is O(log N) Binary Heaps 4 Binary Heaps • A binary heap is a binary tree (NOT a BST) that is: › Complete: the tree is completely filled except possibly the bottom level, which is filled from left to right › Satisfies the heap order property • every node is less than or equal to its children • or every node is greater than or equal to its children • The root node is always the smallest node › or the largest, depending on the heap order Binary Heaps 5 Heap order property • A heap provides limited ordering information • Each path is sorted, but the subtrees are not sorted relative to each other › A binary heap is NOT a binary search tree -1 2 1 0 1 4 6 2 6 0 7 5 8 4 7 These are all valid binary heaps (minimum) Binary Heaps 6 Binary Heap vs Binary Search Tree Binary Heap Binary Search Tree min value 5 94 10 94 10 97 min value 97 24 5 24 Parent is less than both Parent is greater than left left and right children child, less than right child Binary Heaps 7 Structure property • A binary heap is a complete tree › All nodes are in use except for possibly the right end of the bottom row Binary Heaps 8 Examples 6 2 4 2 4 6 complete tree, 5 heap order is "max" 2 2 not complete 4 6 5 6 7 5 7 4 complete tree, complete tree, but min heap order is "min" heap order is broken Binary Heaps 9 Array Implementation of Heaps • Root node = A[1] • Children of A[i] = A[2i], A[2i + 1] • Keep track of current size N (number of nodes) 1 2 2 3 value - 2 4 6 7 5 4 6 index 01234567 7 5 4 5 N = 5 Binary Heaps 10 FindMin and DeleteMin • FindMin: Easy! › Return root value A[1] 2 › Run time = ? 4 3 7 5 8 10 • DeleteMin: 11 9 6 14 › Delete (and return) value at root node Binary Heaps 11 DeleteMin • Delete (and return) 4 3 value at root node 7 5 8 10 11 9 6 14 Binary Heaps 12 Maintain the Structure Property • We now have a “Hole” at the root 4 3 › Need to fill the hole with 7 5 8 10 another value 11 9 6 14 • When we get done, the tree will have one less 4 3 node and must still be 7 5 8 10 complete 11 9 6 14 Binary Heaps 13 Maintain the Heap Property • The last value has lost its node 14 › we need to find a new place for it • We can do a simple 4 3 insertion sort - like operation to find the 7 5 8 10 correct place for it in the 11 9 6 tree Binary Heaps 14 DeleteMin: Percolate Down ? 14 3 ? 14 3 4 3 4 4 8 7 5 8 10 7 5 8 10 7 5 14 10 11 9 6 11 9 6 11 9 6 • Keep comparing with children A[2i] and A[2i + 1] • Copy smaller child up and go down one level • Done if both children are ≥ item or reached a leaf node • What is the run time? Binary Heaps 15 Percolate Down PercDown(i:integer, x :integer): { // N is the number of entries in heap// j : integer; Case{ 2i > N : A[i] := x; //at bottom// 2i = N : if A[2i] < x then A[i] := A[2i]; A[2i] := x; else A[i] := x; 2i < N : if A[2i] < A[2i+1] then j := 2i; else j := 2i+1; if A[j] < x then A[i] := A[j]; PercDown(j,x); else A[i] := x; }} Binary Heaps 16 DeleteMin: Run Time Analysis • Run time is O(depth of heap) • A heap is a complete binary tree • Depth of a complete binary tree of N nodes? ⎣ ⎦ › depth = log2(N) • Run time of DeleteMin is O(log N) Binary Heaps 17 Insert • Add a value to the tree 2 • Structure and heap 3 order properties must still be correct when we 4 8 are done 7 5 14 10 11 9 6 Binary Heaps 18 Maintain the Structure Property • The only valid place for a new node in a 2 complete tree is at the end of the array 3 • We need to decide on 4 8 the correct value for the 7 5 14 10 new node, and adjust 11 9 6 the heap accordingly Binary Heaps 19 Maintain the Heap Property • The new value goes where? • We can do a simple insertion sort operation on the path from 3 the new place to the root to find 4 8 the correct place for it in the tree 7 5 14 10 11 9 6 2 Binary Heaps 20 Insert: Percolate Up 2 3 3 ? 3 4 8 4 8 8 7 5 14 10 7 14 10 7 4 14 10 ? ? 11 9 6 11 9 6 5 11 9 6 5 2 2 • Start at last node and keep comparing with parent A[i/2] • If parent larger, copy parent down and go up one level • Done if parent ≤ item or reached top node A[1] • Run time? Binary Heaps 21 Insert: Done 2 3 8 7 4 14 10 11 9 6 5 • Run time? Binary Heaps 22 PercUp PercUp(i : integer, x : integer): { if i = 1 then A[1] := x else if A[i/2] < x then A[i] := x; else A[i] := A[i/2]; Percup(i/2,x); } Binary Heaps 23 Sentinel Values • Every iteration of Insert needs to test: -∞ › if it has reached the top node A[1] › if parent ≤item 2 • Can avoid first test if A[0] contains a very 3 8 large negative value › sentinel -∞ < item, for all items 7 4 10 9 • Second test alone always stops at top 11 9 6 5 value -∞ 2 3 8 7 4 10 9 11 9 6 5 index 012345678 9 10 11 12 13 Binary Heaps 24 Binary Heap Analysis • Space needed for heap of N nodes: O(MaxN) › An array of size MaxN, plus a variable to store the size N, plus an array slot to hold the sentinel •Time › FindMin: O(1) › DeleteMin and Insert: O(log N) › BuildHeap from N inputs : O(N) (forthcoming) Binary Heaps 25.

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    25 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us