CS106X – Programming Abstractions in C++

Preview:

DESCRIPTION

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. - PowerPoint PPT Presentation

Citation preview

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.

2

Today’s Topics: Heaps!1. Linked list coding interview questions2. Priority queues

Binary trees Binary heaps

Coding interview question

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

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

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)?

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

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

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.JPG

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

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

+

Binary trees

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!)

How many of these are valid binary trees?

A. 0-3B. 4C. 5

D. 6E. 7-8

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:

A node object for binary trees

data:

left:

right:

data:

left:

right:

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

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)

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.

How many of these could be valid binary heaps?

A. 0-1B. 2C. 3

D. 4E. 5-8

How many of these are valid min-binary-heaps?

A. 0B. 1C. 2D. 3

In how many places could the smallest number in this min-binary-heap be located ?

A. 0-2B. 3-4C. 5-6D. 7-8

Binary heap in an array

Binary heap in an array 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

data:

left:

right:

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: A. i – 2B. i / 2C. (i – 1)/2D. 2i

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:A. i +1B. i + 2C. 2i D. 2i + 1

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

Binary heap insert and delete

Binary heap insert + “bubble up”

Binary heap insert

Binary heap delete + “trickle-down”

Binary heap delete + “trickle-down”

TRUE OR FALSE There is only one configuration of a valid

min-heap containing the elements {34, 22, 3, 9, 18}

A. TRUEB. FALSE

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}

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}

How many distinct min-heaps are possible for the elements {3, 9, 18, 22, 34}?

A. 1-2B. 3-4C. 5-8D. 5!E. Other/none/more

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

Recommended