ITEC 2620A Introduction to Data Structures Instructor: Prof. Z. Yang Course Website: http://people.math.yorku.ca/~zyang/itec 2620a.htm Office: Tel 3049 Stacks and Queues 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 3 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? 4 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 5 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 6 Heaps and Heapsort Key Points • Heaps • Make a heap • Heapsort 8 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. 9 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. 10 Inserting a new value • How do we maintain a complete binary tree? – Put value at the bottom and sift up • Heap property is maintained. 11 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) 12 Making a Heap • Array representation • Make a heap • Analysis of building a heap • Heapsort 13
© Copyright 2026 Paperzz