* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Download ch10ppt - Learn District 196
Survey
Document related concepts
Transcript
Chapter 10: Non-linear Data Structures Presentation slides for Java Software Solutions for AP* Computer Science 3rd Edition by John Lewis, William Loftus, and Cara Cocking Java Software Solutions is published by Addison-Wesley Presentation slides are copyright 2006 by John Lewis, William Loftus, and Cara Cocking. All rights reserved. Instructors using the textbook may use and modify these slides for pedagogical purposes. *AP is a registered trademark of The College Entrance Examination Board which was not involved in the production of, and does not endorse, this product. © 2011 Pearson Education, publishing as Addison-Wesley Non-linear Data Structures Now we learn a few more data structures Chapter 10 focuses on: • • • • Sets and maps Trees and binary search trees Heaps Handling collisions in hashtables 2 © 2011 Pearson Education, publishing as Addison-Wesley Sets and Maps A set is a collection of elements with no duplicates • Example: {5, 7, 8} is a set, {3, 3, 4} is not A map matches, or maps, keys to value • Example: a dictionary is a map that maps words to definitions The keys in a map form a set (and therefore must be unique) The Set and Map interfaces in Java represent sets and maps The classes HashSet, TreeSet, HashMap, and TreeMap are implementations © 2011 Pearson Education, publishing as Addison-Wesley Trees and Binary Trees A tree is a non-linear data structure that consists of zero or more nodes that form a hierarchy One node is the root node In a binary tree, each node has at most two children, the right child and left child Nodes without children are called leaf nodes A subtree is formed by each child, consisting of the child and its descendents © 2011 Pearson Education, publishing as Addison-Wesley A Tree © 2011 Pearson Education, publishing as Addison-Wesley Binary Tree Implementation A binary tree is a dynamic data structure Each node contains data and has references to the left and right children Basic structure: class TreeNode { Object value; TreeNode left; TreeNode right; } See TreeNode.java (page 557) © 2011 Pearson Education, publishing as Addison-Wesley Binary Tree Implementation © 2011 Pearson Education, publishing as Addison-Wesley Tree Traversal There are 3 ways to traverse a tree, that is, to visit every node: Preorder traversal: visit the current node, then traverse its left subtree, then its right subtree Postorder traversal: traverse the left subtree, then the right subtree, then visit the current node Inorder traversal: traverse the left subtree, then visit the current node, then traverse its right subtree Tree traversal is a recursive process © 2011 Pearson Education, publishing as Addison-Wesley Binary Search Trees A binary search tree can be used for storing sorted data For any node N, every node in N’s left subtree must be less than N, and every node in N’s right subtree must be greater than or equal to N An inorder traversal of a binary tree visits the nodes in sorted order See SortGrades.java (page 562) See BSTree.java (page 563) See BSTNode.java (page 565) © 2011 Pearson Education, publishing as Addison-Wesley A Binary Search Tree © 2011 Pearson Education, publishing as Addison-Wesley Binary Search Trees Searching for an element is a recursive process If the desired element is less than the current node, try the left child next If the desired element is greater than the current node, try the right child next To insert an element, perform a search to find the proper spot To delete an element, replace it with its inorder successor © 2011 Pearson Education, publishing as Addison-Wesley Heaps A heap is a complete binary tree in which each parent has a value less than both its children A complete binary tree has the maximum number of nodes on every level, except perhaps the bottom, and all the nodes are in the leftmost positions on the bottom The smallest node in a heap is always at the root © 2011 Pearson Education, publishing as Addison-Wesley Adding to a Heap To add a node to a heap, add it in the position that keeps the tree complete, then bubble it up if necessary by swapping with its parent until it is not less than its parent © 2011 Pearson Education, publishing as Addison-Wesley Deleting from a Heap To delete a node from a heap, replace it with the last node on the bottom level and bubble that node up or down as necessary © 2011 Pearson Education, publishing as Addison-Wesley Heapsort A heap can be used to perform a sort To do a heapsort, add the elements to a heap, then remove the elements one-by-one by always removing the root node The nodes will be removed in sorted order Heapsort is O(n log n) © 2011 Pearson Education, publishing as Addison-Wesley Implementing Heaps Heaps are often implemented using lists since it is more convenient to add and delete items The children of the ith element are the 2ith and 2i+1th elements in the list © 2011 Pearson Education, publishing as Addison-Wesley Hashtables We can handle collisions in hashtables using chaining or open addressing techniques With chaining, each cell in the hashtable is a linked list and thus many elements can be stored in the same cell © 2011 Pearson Education, publishing as Addison-Wesley Hashtables With open addressing techniques, when a collision occurs, a new hash code is calculated, called rehashing Rehashing continues until a free cell is found Linear probing, a simple rehash method, probes down the hashtable (wrapping around when the end is reached) until a free cell is found See Guests.java (page 586) © 2011 Pearson Education, publishing as Addison-Wesley Summary Chapter 10 has focused on: • • • • Sets and maps Trees and binary search trees Heaps Handling collisions in hashtables © 2011 Pearson Education, publishing as Addison-Wesley