130 likes | 147 Views
Understand stack-based recursion, queue operations, heap management, and complexity analysis for efficient data structure implementations.
E N D
ITEC 2620MIntroduction to Data Structures Instructor: Prof. Z. Yang Course Website: http://people.math.yorku.ca/~zyang/itec2620m.htm Office: DB 3049
Stack-based Recursion • Computers use stacks to manage function calls/function returns. • When a function is called, data is pushed onto the stack • When a function finishes, data is popped off the stack • Rather than using the computer’s stack, we can use our own to implement recursion! • Binary tree traversal
Stacks and Recursion • Any recursive algorithm can be implemented non-recursively. • Do you have to use a function that calls itself? • No. You can use a stack to implement recursion • Do you have to use a recursive algorithm? • Yes. How do you traverse a binary tree without a recursive algorithm?
Queues • A queue is a “First-In, First-Out” = “FIFO” buffer. • e.g. line-ups • people enter from the back of the line • people are served (exit) from the front of the line • When elements are added, they are enqueued to the back. • When elements are removed, they are dequeued from the front. • enqueue() and dequeue() are the two defining functions of a queue. • Example • Link-based Queue
Priority Queues • Previous queues were based on entry order (e.g. LIFO, FIFO). • Priority queues are based on item value. • Stacks and queues aren’t designed for searches. • BST could work, but there is more overhead than we need. • don’t need completely sorted queue – only need first element
Key Points • Heaps • Make a heap • Heapsort
Heaps • Complete binary tree • Partially ordered • max heap – the value of every node is greater than its children • min heap – the value of every node is smaller than its children • No relationship between siblings, only ancestors (up-down) • BST has left-right relationships.
Removing the Minimum Value • Minimum value is at root, so we should remove this element. • How do we maintain a complete binary tree? • Put last value at the root and sift down • Switch the value with the smallest of its children – continue • Heap property is maintained.
Inserting a new value • How do we maintain a complete binary tree? • Put value at the bottom and sift up • Heap property is maintained.
Complexity Analysis • Remove minimum • Best value stays at depth 1 O(1) • Worst value goes back to bottom O(logn) • Average value goes half way O(logn) • Insert • Best value stays at bottom O(1) • Worst value goes to top O(logn) • Average value goes half way O(logn)
Making a Heap • Array representation • Make a heap • Analysis of building a heap • Heapsort