Download PPT Chapter 10 Non- Linear Data Structures

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts

Linked list wikipedia , lookup

Java ConcurrentMap wikipedia , lookup

Lattice model (finance) wikipedia , lookup

Quadtree wikipedia , lookup

Red–black tree wikipedia , lookup

B-tree wikipedia , lookup

Interval tree wikipedia , lookup

Binary tree wikipedia , lookup

Binary search tree wikipedia , lookup

Transcript
Chapter 10: Non-linear Data Structures
Presentation slides for
Java Software Solutions
for AP* Computer Science A
2nd 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.
© 2006 Pearson Education
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
© 2006 Pearson Education
2
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
© 2006 Pearson Education
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
© 2006 Pearson Education
A Tree
© 2006 Pearson Education
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)
© 2006 Pearson Education
Binary Tree Implementation
© 2006 Pearson Education
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
© 2006 Pearson Education
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)
© 2006 Pearson Education
A Binary Search Tree
© 2006 Pearson Education
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
© 2006 Pearson Education
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
© 2006 Pearson Education
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
© 2006 Pearson Education
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
© 2006 Pearson Education
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)
© 2006 Pearson Education
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
© 2006 Pearson Education
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
© 2006 Pearson Education
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)
© 2006 Pearson Education
Summary
 Chapter 10 has focused on:
•
•
•
•
Sets and maps
Trees and binary search trees
Heaps
Handling collisions in hashtables
© 2006 Pearson Education