1 / 36

CS106X – Programming Abstractions in C++

CS2 in C++ Peer Instruction Materials by  Cynthia Bailey Lee  is licensed under a  Creative Commons Attribution- NonCommercial - ShareAlike 4.0 International License . Permissions beyond the scope of this license may be available at  http://peerinstruction4cs.org.

abbott
Download Presentation

CS106X – Programming Abstractions in C++

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. CS2 in C++ Peer Instruction Materials by Cynthia Bailey Lee is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.Permissions beyond the scope of this license may be available at http://peerinstruction4cs.org. CS106X – Programming Abstractions in C++ Cynthia Bailey Lee

  2. Today’s Topics: Heaps! • Linked list coding interview questions • Priority queues • Binary trees • Binary heaps

  3. Coding interview question

  4. Remove current (we want to remove this one) Suppose we have apointer (current) to the node containing the item to be removed. 30 22 5 42 What additional information do we need to successfully remove the node? A) Nothing additional. B) A pointer to the node immediately prior to the to-be-deleted node. C) A pointer to the node immediately after the to-be-deleted node. D) Both B and C. head NULL

  5. NINJA CODER EDITION Suppose we have apointer (current) to the node containing the item to be removed. current (we want to remove this one) 30 22 5 42 head NULL

  6. Other classic interview questions • How can you remove a node of a linked list given a pointer to the node itself (and not the previous one)? • Write code to reverse a linked list in place. • How can you detect if there is a loop in a linked list (i.e. list is improperly formed), using constant space (O(1) amount of space)?

  7. Priority Queue Emergency Department waiting room operates as a priority queue: patients are sorted according to seriousness, NOT how long they have waited.

  8. Some priority queue implementation options • Unsorted linked list • Insert new element in front • Remove by searching list for highest-priority item • Sorted linked list • Always insert new elements where they go in priority-sorted order • Remove from front

  9. Priority queue implementations Unsorted linked list • Add is FAST • Just throw it in the list at the front • O(1) • Remove/peek is SLOW • Hard to find item the highest priority item—could be anywhere • O(N) This file is licensed under the Creative CommonsAttribution-Share Alike 3.0 Unported license. KeyahCheatumhttp://commons.wikimedia.org/wiki/File:Messy_Room.JPG

  10. Priority queue implementations Sorted linked list • Add is SLOW • Need to step through the list to find where item goes in priority-sorted order • O(N) • Remove/peek is FAST • Easy to find item you are looking for (first in list) • O(1) Released to the public domain: http://commons.wikimedia.org/wiki/File:Wall_Closet.jpg

  11. Priority queue implementations We want the best of both • Fast add AND fast remove/peek • We will investigate trees as a way to get the best of both worlds +

  12. Binary trees

  13. A binary tree • “In computer science, a binary tree is a tree data structure in which each node has at most two child nodes, usually distinguished as "left" and "right".” (Thanks, Wikipedia!)

  14. How many of these are valid binary trees? • 0-3 • 4 • 5 • 6 • 7-8

  15. A node object for binary trees data: left: right: • Similar to a linked list node, it contains a pointer to data, and a pointer to the next elements • Whereas a linked list node has just one next pointer, a binary node tree has two child pointers, left and right

  16. A node object for binary trees • Similar to a linked list node, it contains a pointer to data, and a pointer to the next elements • Whereas a linked list node has just one next pointer, a binary node tree has two child pointers, left and right data: left: right: data: left: right: data: left: right:

  17. Heaps! IMPORTANT NOTE: Despite the shared name, Heaps have nothing to do with the Heap part of memory (Binary Heap = a partially-ordered tree data structure; Heap is in contrast to Stack as a part of memory)

  18. Binary Heaps* • Binary heaps are one kind of binary tree • They have a few special restrictions, in addition to the usual binary tree ADT: • Must be complete • Ordering of data must obey heap property • Min-heap version: a parent’s data is always ≤ its children’s data • Max-heap version: a parent’s data is always ≥ its children’s data * There are other kinds of heaps as well. For example, binomial heap is on your assignment.

  19. How many of these could be valid binary heaps? • 0-1 • 2 • 3 • 4 • 5-8

  20. How many of these are valid min-binary-heaps? • 0 • 1 • 2 • 3

  21. In how many places could the smallest number in this min-binary-heap be located ? • 0-2 • 3-4 • 5-6 • 7-8

  22. Binary heap in an array

  23. Binary heap in an array data: left: right: • We actually do NOT typically use a node object to implement heaps • Because they must be complete, they fit nicely into an array, so we usually do that

  24. Heap in an array • For tree of height h, array length is 2h-1 • For a node in array index i: • Parent is at array index: • i – 2 • i / 2 • (i – 1)/2 • 2i

  25. Binary heap in an array • For tree of height h, array length is 2h-1 • For a node in array index i: • Left child is at array index: • i +1 • i + 2 • 2i • 2i + 1

  26. Binary heap in an array • For tree of height h, array length is 2h-1 • For a node in array index i: • Parent is at array index: (i – 1)/2 • Left child is at array index: 2i + 1 • Right child is at array index: 2i + 2

  27. Binary heap insert and delete

  28. Binary heap insert + “bubble up”

  29. Binary heap insert

  30. Binary heap delete + “trickle-down”

  31. Binary heap delete + “trickle-down”

  32. TRUE OR FALSE • There is only one configuration of a valid min-heapcontaining the elements {34, 22, 3, 9, 18} • TRUE • FALSE

  33. Heap outcomes by insert order Create a MIN heap by inserting the elements, one by one, in the order given below for the second letter of your first name: • A-F: {3, 9, 18, 22, 34} • G-L: {3, 22, 18, 9, 34} • M-R: {9, 22, 18, 3, 34} • S-Z: {18, 22, 3, 9, 34}

  34. Heap outcomes by insert order Create a MIN heap by inserting the elements, one by one, in the order given below for the first letter of your last name: • A-F: {18, 9, 34, 3, 22} • G-L: {3, 18, 22, 9, 34} • M-R: {22, 9, 34, 3, 18} • S-Z: {34, 3, 9, 18, 22}

  35. How many distinct min-heaps are possible for the elements {3, 9, 18, 22, 34}? • 1-2 • 3-4 • 5-8 • 5! • Other/none/more

  36. Time cost • What is the worst-case time cost for each heap operation: Add, Remove, Peek? • O(n), O(1), O(1) • O(logn), O(logn), O(1) • O(n), O(logn), O(logn) • Other/none/more

More Related