Priority queues
Hash tables – chaining Priority queue ADT Binary heap
March 13, 2020 Cinda Heeren / Andy Roth / Geoffrey Tien 1
Priority queues Hash tables chaining Priority queue ADT Binary - - PowerPoint PPT Presentation
Priority queues Hash tables chaining Priority queue ADT Binary heap March 13, 2020 Cinda Heeren / Andy Roth / Geoffrey Tien 1 Separate chaining Separate chaining takes a different approach to collisions Each entry in the hash table
March 13, 2020 Cinda Heeren / Andy Roth / Geoffrey Tien 1
Cinda Heeren / Andy Roth / Geoffrey Tien 2 March 13, 2020
March 13, 2020 Cinda Heeren / Andy Roth / Geoffrey Tien 3
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 29 32 58 21 81 35 60
Cinda Heeren / Andy Roth / Geoffrey Tien 4 March 13, 2020
March 13, 2020 Cinda Heeren / Andy Roth / Geoffrey Tien 5
March 13, 2020 Cinda Heeren / Andy Roth / Geoffrey Tien 6
March 13, 2020 Cinda Heeren / Andy Roth / Geoffrey Tien 7
March 13, 2020 Cinda Heeren / Andy Roth / Geoffrey Tien 8
G(9) D(100) G(9) C(3) F(7) E(5) A(4) B(6) insert D(100) removeMax
March 13, 2020 Cinda Heeren / Andy Roth / Geoffrey Tien 9
March 13, 2020 Cinda Heeren / Andy Roth / Geoffrey Tien 10
March 13, 2020 Cinda Heeren / Andy Roth / Geoffrey Tien 11
Heap has asymptotically same performance as AVL tree, but MUCH simpler to implement
March 13, 2020 Cinda Heeren / Andy Roth / Geoffrey Tien 12
March 13, 2020 Cinda Heeren / Andy Roth / Geoffrey Tien 13
complete binary trees incomplete binary trees
March 13, 2020 Cinda Heeren / Andy Roth / Geoffrey Tien 14
98 86 41 13 65 32 29 9 10 44 23 21 32 Heaps are not fully ordered – an in-order traversal would result in: 9, 13, 10, 86, 44, 65, 23, 98, 21, 32, 32, 41, 29
March 13, 2020 Cinda Heeren / Andy Roth / Geoffrey Tien 15
2 5 7 5 7 8 2 5 5 7 7 8
March 13, 2020 Cinda Heeren / Andy Roth / Geoffrey Tien 16
1 2 3 4 5 6 7 1 2 3 4 5 6 .. .
March 13, 2020 Cinda Heeren / Andy Roth / Geoffrey Tien 17
March 13, 2020 Cinda Heeren / Andy Roth / Geoffrey Tien 18
98 86 41 13 65 32 29 9 10 44 23 21 32 1 2 3 4 5 6 7 8 9 10 11 12 13 Heap Underlying array 98 86 41 13 65 32 29 9 10 1 2 3 4 5 6 7 44 23 21 32 10 11 12 13 8 9 value index
March 13, 2020 Cinda Heeren / Andy Roth / Geoffrey Tien 19
class MinHeap { private: int size; // number of stored elements int capacity; // maximum capacity of array int* arr; // array in dynamic memory public: ... }; MinHeap::MinHeap(int initcapacity) { size = 0; capacity = initcapacity; arr = new int[capacity+1]; }
March 13, 2020 Cinda Heeren / Andy Roth / Geoffrey Tien 20
March 13, 2020 Cinda Heeren / Andy Roth / Geoffrey Tien 21
98 86 41 13 65 32 29 9 10 44 23 21 32 98 86 41 13 65 32 29 9 10 1 2 3 4 5 6 7 44 23 21 32 10 11 12 13 8 9 value index 14 Insert 81
March 13, 2020 Cinda Heeren / Andy Roth / Geoffrey Tien 22
98 86 41 13 65 32 29 9 10 44 23 21 32 98 86 41 13 65 32 29 9 10 1 2 3 4 5 6 7 44 23 21 32 10 11 12 13 8 9 value index 81 14 Insert 81 81 81 29 parent: 14 2 = 7 81 29
March 13, 2020 Cinda Heeren / Andy Roth / Geoffrey Tien 23
98 86 41 13 65 32 81 9 10 44 23 21 32 98 86 41 13 65 32 81 9 10 1 2 3 4 5 6 7 44 23 21 32 10 11 12 13 8 9 value index 29 14 Insert 81 29 81 41 parent: 7 2 = 3 81 41 81 is less than 98 so finished
March 13, 2020 Cinda Heeren / Andy Roth / Geoffrey Tien 24
March 13, 2020 Cinda Heeren / Andy Roth / Geoffrey Tien 25
March 13, 2020 Cinda Heeren / Andy Roth / Geoffrey Tien 26