Discrete Mathematics

Discrete Mathematics

CS106X – Programming Abstractions in C++ Dr. Cynthia Bailey Lee 2 Today’s Topics: 1. Binary tree 2. Heap Priority Queue Emergency Department waiting room operates as a priority queue: patients are sorted according to seriousness, NOT how long they have waited. 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-3 D. 6 B. 4 E. 7-8 C. 5 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 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 Heaps Heaps 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 How many of these could be valid heaps? A. 0-1 D. 4 B. 2 E. 5-8 C. 3 How many of these are valid min-heaps? A. 0 B. 1 C. 2 D. 3 In how many places could the smallest number in this min-heap be located ? A. 0-2 B. 3-4 C. 5-6 D. 7-8 In how many places could the number 35 be located in this min-heap? A. 0-2 5 B. 3-4 15 C. 5-6 D. 7-8 In how many places could the number 35 be located in this min-heap? A. 0-2 5 B. 3-4 15 C. 5-6 D. 7-8 Min heaps also good for priority queues, if “high priority” in your system actually means low value (i.e. 1 means most important) Heap in an array 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 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 – 2 B. i / 2 C. (i – 1)/2 D. 2i 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 Heap insert and delete Heap insert Heap delete 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 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-2 B. 3-4 C. 5-8 D. 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 Heapsort Heapsort is super easy 1. Insert unsorted elements one at a time into a heap until all are added 2. Remove them from the heap one at a time (we will always be removing the next biggest item, for max-heap; or next smallest item, for min-heap) THAT’S IT! Implementing heapsort Devil’s in the details We can do the entire heapsort in place in one array Unlike mergesort, we don’t need a separate array for our workspace We can do it all in place in one array (the same array we were given as input) Build heap by inserting elements one at a time: Sort array by removing elements one at a time: Build heap by inserting elements one at a time IN PLACE: Sort array by removing elements one at a time IN PLACE:.

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    37 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us