1 / 27

CSE 12 – Basic Data Structures

Download Presentation

CSE 12 – Basic Data Structures

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 Java Peer Instruction Materials by Cynthia Lee is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.Based on a work at http://peerinstruction4cs.org.Permissions beyond the scope of this license may be available at http://peerinstruction4cs.org. CSE 12 – Basic Data Structures Cynthia Bailey Lee Some slides and figures adapted from Paul Kube’s CSE 12

  2. Today’s Topics • Heap implementation issues • Heap uniqueness • Heapsort in place • HW suggestions • Back to generic binary trees • In-order traversal • Pre-order traversal • Post-order traversal • Level-order traversal (also called “breadth-first”)

  3. Reading quiz!

  4. Reading quiz! 1. A node in a binary tree may have ___ children • 0 • 1 • 2 • 3 • Other/none of the above/more than one of the above

  5. Reading quiz! 2. A preorder traversal visits the current node, performs a preorder traversal of its ___ subtree and then performs a preorder traversal of the its ___ subtree. • right, right • left, right • left, left • right, left

  6. Reading quiz! 3. A full binary tree is a tree in which every node other than the leaves has ____ children. • 0 • 1 • 2 • 3 • Other/none of the above/more than one of the above

  7. Heap uniqueness

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

  9. 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: {3, 9, 18, 22, 34} • G-L: {3, 33, 18, 9, 34} • M-R: {9, 22, 18, 3, 34} • S-Z: {18, 22, 3, 9, 34}

  10. 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}

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

  12. Heapsort

  13. Heapsort is super easy • Insert unsorted elements one at a time into a heapuntil all are added • Remove them from the heap one at a time. We will always be removing the next biggest[smallest] item from the max-heap[min-heap], so the items come out in sorted order! THAT’S IT!

  14. Example: using heapsort to print an array in sorted order (note: this is not the in-place version you need for HW) public static void printSorted(String[] unsortedlist) { Heap<String> heap = new Heap<String>(); for (inti=0; i<unsortedlist.length; i++) { heap.add(unsortedlist[i]); } while (!heap.isEmpty()) { System.out.println(heap.remove()); } }

  15. Implementing heapsort Devil’s in the details

  16. 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)

  17. Build heap by inserting elements one at a time:

  18. Sort array by removing elements one at a time:

  19. Build heap by inserting elements one at a time IN PLACE:

  20. Sort array by removing elements one at a time IN PLACE:

  21. Important tip! • The in-place approach will not work if your test to see if index iis past the end of the heap is to check if heaparray[i] is null. • Things will be in the array that are NOT in the heap! • You need to keep track of an int size (in addition to an int capacity) in order to check where the heap ends!

  22. Binary tree traversals

  23. Binary trees • Recall from last time, a binary tree is any tree where each node has 0, 1, or 2 children • That’s the only restriction • Recall: heaps are a special case of binary trees, and they have two additional restrictions

  24. Trees vs. Lists • Lists have an obvious ordering • 1st element is first, 2nd element is second, … • Trees don’t • More than one reasonable order

  25. Pre-order traversal preorder(node) { if (node != null){ visit this node preorder(node.left) preorder(node.right) } } • D B E A F C G • A B D E C F G • A B C D E F G • D E B F G C A • Other/none/more

  26. Post-order traversal postorder(node) { if (node != null){ postorder(node.left) postorder(node.right) visit this node } } • D B E A F C G • A B D E C F G • A B C D E F G • D E B F G C A • Other/none/more

  27. In-order traversal inorder(node) { if (node != null){ inorder(node.left) visit this node inorder(node.right) } } • D B E A F C G • A B D E C F G • A B C D E F G • D E B F G C A • Other/none/more

More Related