200 likes | 313 Vues
Binary Heaps. Text Read Weiss, § 21.1 - 21.4 Binary Heap One-array representation of a tree Complete trees Building a Binary Heap Insert Delete. Motivation.
E N D
Binary Heaps • Text • Read Weiss, §21.1 - 21.4 • Binary Heap • One-array representation of a tree • Complete trees • Building a Binary Heap • Insert • Delete
Motivation • Development of a data structure which allows efficient inserts and efficient deletes of the minimum value (minheap) or maximum value (maxheap)
Implementation • One-array implementation of a binary tree • Root of tree is at element 1 of the array • If a node is at element i of the array, then its children are at elements 2*i and 2*i+1 • If a node is at element i of the array, then its parent is at element floor(i/2)=└i/2┘
Implementation 4 12 5 26 25 14 15 29 45 35 31 21 i 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 array __ 4 5 12 26 25 14 15 29 45 35 31 21 __ __ __ currentsize = 12
Implementatation • Heap must be a complete tree • all leaves are on the lowest two levels • nodes are added on the lowest level, from left to right • nodes are removed from the lowest level, from right to left
Inserting a Value 4 12 5 26 25 14 15 29 45 35 31 21 3 insert here to keep tree complete i 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 array __ 4 5 12 26 25 14 15 29 45 35 31 21 3 __ __ currentsize = 13 Insert 3
Inserting a Value 4 12 5 26 25 14 15 29 45 35 31 21 save new value in a temporary location: tmp 3 Insert 3
Inserting a Value 4 12 5 26 25 14 15 29 45 35 31 21 14 copy 14 down because 14 > 3 3 tmp Insert 3
Inserting a Value 4 12 5 26 25 12 15 29 45 35 31 21 14 copy 12 down because 12 > 3 3 tmp Insert 3
Inserting a Value 4 4 5 26 25 12 15 29 45 35 31 21 14 copy 4 down because 4 > 3 3 tmp Insert 3
Inserting a Value 3 insert 3 4 5 26 25 12 15 29 45 35 31 21 14 Insert 3
Heap After Insert 3 4 5 26 25 12 15 29 45 35 31 21 14
Deleting a Value (note new tree!) 3 7 5 26 25 12 15 29 45 35 31 21 14 Delete 3
Deleting a Value 7 5 26 25 12 15 29 45 35 31 21 14 save root value … tmp 3 Delete 3
Deleting a Value copy value of last node in complete tree into temporary location; decrement currentsize 14 7 5 26 25 12 15 X 29 45 35 31 21 14 tmp 3 Delete 3
Deleting a Value 14 push down root … compare children select smaller 7 5 26 25 12 15 29 45 35 31 21 tmp 3 Delete 3
Deleting a Value 14 push down root … 5 copy smaller value into parent 7 26 25 12 15 29 45 35 31 21 tmp 3 Delete 3
Deleting a Value 14 push down root … 5 7 26 25 12 15 29 45 35 31 21 compare children select smaller (25) tmp 3 Delete 3
Deleting a Value push down root … 5 7 14 26 25 12 15 29 45 35 31 21 copy 14 into parent because 14 < smaller child tmp 3 Delete 3
Deleting a Value 5 7 14 26 25 12 15 29 45 35 31 21 return 3 Delete 3