Presentation is loading. Please wait.

Presentation is loading. Please wait.

CS106X – Programming Abstractions in C++ Cynthia Bailey Lee CS2 in C++ Peer Instruction Materials by Cynthia Bailey Lee is licensed under a Creative Commons.

Similar presentations


Presentation on theme: "CS106X – Programming Abstractions in C++ Cynthia Bailey Lee CS2 in C++ Peer Instruction Materials by Cynthia Bailey Lee is licensed under a Creative Commons."— Presentation transcript:

1 CS106X – Programming Abstractions in C++ Cynthia Bailey Lee 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.Cynthia Bailey LeeCreative Commons Attribution-NonCommercial- ShareAlike 4.0 International Licensehttp://peerinstruction4cs.org

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

3 Coding interview question

4 Suppose we have a pointer (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. NULL head current (we want to remove this one) Remove

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

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 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) Priority queue implementations This file is licensed under the Creative Commons Attribution-Share Alike 3.0 Unported license. Keyah Cheatum http://commons.wikimedia.org/wiki/File:Messy_Room.JPGCreative CommonsAttribution-Share Alike 3.0 Unported Keyah Cheatumhttp://commons.wikimedia.org/wiki/File:Messy_Room.JPG

10 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) Priority queue implementations Released to the public domain: http://commons.wikimedia.org/wiki/File:Wall_Closet.jpg

11 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 Priority queue implementations +

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? A. 0-3 B. 4 C. 5 D. 6 E. 7-8

15 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

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

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? A. 0-1 B. 2 C. 3 D. 4 E. 5-8

20 How many of these are valid min-binary-heaps? A. 0 B. 1 C. 2 D. 3

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

22 Binary heap in an array

23  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 2 h -1  For a node in array index i:  Parent is at array index: A. i – 2 B. i / 2 C. (i – 1)/2 D. 2i

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

26 Binary heap in an array  For tree of height h, array length is 2 h -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

32 TRUE OR FALSE  There is only one configuration of a valid min-heap containing the elements {34, 22, 3, 9, 18} A. TRUE B. 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}? A. 1-2 B. 3-4 C. 5-8 D. 5! E. Other/none/more

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


Download ppt "CS106X – Programming Abstractions in C++ Cynthia Bailey Lee CS2 in C++ Peer Instruction Materials by Cynthia Bailey Lee is licensed under a Creative Commons."

Similar presentations


Ads by Google