1 / 50

Mastering Trees and Priority Queues in Java

Learn about trees in Java, including binary search trees and heaps. Understand tree traversals and implement sorted sets/maps and priority queues in Java. Explore the vocabulary and concepts related to trees in Java programming.

hough
Download Presentation

Mastering Trees and Priority Queues in Java

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. Chapter 19Implementing Trees and Priority Queues Fundamentals of Java

  2. Objectives • Use the appropriate terminology to describe trees. • Distinguish different types of hierarchical collections such as general trees, binary trees, binary search trees, and heaps. Fundamentals of Java

  3. Objectives (cont.) • Understand the basic tree traversals. • Use binary search trees to implement sorted sets and sorted maps. • Use heaps to implement priority queues. Fundamentals of Java

  4. Vocabulary • Binary search tree • Binary tree • Expression tree • General tree • Heap • Heap property Fundamentals of Java

  5. Vocabulary (cont.) • Interior node • Leaf • Left subtree • Parse tree • Right subtree • Root Fundamentals of Java

  6. An Overview of Trees • Tree: Data structure in which each item can have multiple successors • All items have exactly one predecessor. • Except a privileged item called the root • Parse tree: Describes the syntactic structure of a sentence in terms of its component parts • Noun phrases and verb phrases Fundamentals of Java

  7. An Overview of Trees (cont.) Figure 19-1: Parse tree for a sentence Fundamentals of Java

  8. An Overview of Trees (cont.) Table 19-1: Summary of terms used to describe trees Fundamentals of Java

  9. An Overview of Trees (cont.) Table 19-1: Summary of terms used to describe trees (cont.) Fundamentals of Java

  10. An Overview of Trees (cont.) Figure 19-2: Tree and some of its properties Fundamentals of Java

  11. An Overview of Trees (cont.) • General trees: Trees with no restrictions on number of children • Binary trees: Each node has at most two children: left child and right child. Figure 19-3: Two unequal binary trees that have equal sets of nodes Fundamentals of Java

  12. An Overview of Trees (cont.) • Recursive processing of trees is common, so useful to have recursive definitions of trees • General tree: Either empty or consists of a finite set of nodes T • Node r is the root. • Set T - {r} partitioned into disjoint subsets (general trees) • Binary tree: Either empty or consists of a root plus a left subtreeand a right subtree (binary trees) Fundamentals of Java

  13. An Overview of Trees (cont.) Figure 19-4: Different types of binary trees Fundamentals of Java

  14. An Overview of Trees (cont.) • Full binary tree: Contains maximum number of nodes for its height • Fully balanced • If height is d, 2d-1 nodes • Level n has up to 2n nodes. • Height of a fully balanced tree of n nodes is log2n. Fundamentals of Java

  15. An Overview of Trees (cont.) • Heap: Binary tree in which the item in each node is less than or equal to the items in both of its children • Heap property Figure 19-5: Examples of heaps Fundamentals of Java

  16. An Overview of Trees (cont.) • Expression tree: For evaluating expressions Figure 19-6: Some expression trees Fundamentals of Java

  17. An Overview of Trees: Binary Search Trees Figure 19-7: Call tree for the binary search of an array Fundamentals of Java

  18. An Overview of Trees: Binary Search Trees (cont.) Figure 19-8: Binary search tree Fundamentals of Java

  19. An Overview of Trees: Binary Search Trees (cont.) • Binary search tree: Each node is greater than or equal to left child and less than or equal to right child. • Recursive search process: Fundamentals of Java

  20. An Overview of Trees: Binary Search Trees (cont.) Figure 19-9: Three binary tree shapes with the same data Fundamentals of Java

  21. Tree Traversal Tree traversal is the process of visiting each node in the tree exactly once. There are several ways to traverse a tree. This section presents inorder, preorder, postorder, depth-first, and breadth-first traversals. The inorder traversal is to visit the left subtree of the current node first, then the current node itself, and finally the right subtree of the current node. The postorder traversal is to visit the left subtree of the current node first, then the right subtree of the current node, and finally the current node itself.

  22. Tree Traversal, cont. The preorder traversal is to visit the current node first, then the left subtree of the current node, and finally the right subtree of the current node.

  23. Binary Tree Traversals Figure 19-10: Preorder traversal Figure 19-11: Inorder traversal Fundamentals of Java

  24. Binary Tree Traversals (cont.) Figure 19-12: Postorder traversal Figure 19-13: Level-order traversal Fundamentals of Java

  25. Linked Implementation of Binary Trees Table 19-2: Methods of the BSTPT interface Fundamentals of Java

  26. Linked Implementation of Binary Trees (cont.) Table 19-2: Methods of the BSTPT interface (cont.) Fundamentals of Java

  27. Linked Implementation of Binary Trees (cont.) Figure 19-14: Interfaces and classes used in the binary search tree prototype Fundamentals of Java

  28. Linked Implementation of Binary Trees (cont.) Example 19.1: Interface for binary search tree prototypes Fundamentals of Java

  29. Linked Implementation of Binary Trees (cont.) Example 19.1: Interface for binary search tree prototypes (cont.) Fundamentals of Java

  30. Draw the binary search tree after inserting the following: • 15, 20, 10, 9, 13, 25

  31. Draw the binary search tree after inserting the following: • 9, 10, 13,15, 20, 25

  32. Linked Implementation of Binary Trees (cont.) add method Fundamentals of Java

  33. Linked Implementation of Binary Trees (cont.) add method (cont.) Fundamentals of Java

  34. Linked Implementation of Binary Trees (cont.) • Pseudocode for searching a binary tree: Fundamentals of Java

  35. Linked Implementation of Binary Trees (cont.) • Inorder traversal code: Fundamentals of Java

  36. Linked Implementation of Binary Trees (cont.) • Pseudocode for level-order traversal: Fundamentals of Java

  37. Linked Implementation of Binary Trees (cont.) • Steps for removing a node: Fundamentals of Java

  38. Linked Implementation of Binary Trees (cont.) • Expanded step 4 for removing a node from a binary tree: Fundamentals of Java

  39. Array Implementation of a Binary Tree Figure 19-16: Complete binary tree Figure 19-17: Array representation of a complete binary tree Fundamentals of Java

  40. Array Implementation of a Binary Tree (cont.) Table 19-3: Locations of given items in an array representation of a complete binary tree Fundamentals of Java

  41. Array Implementation of a Binary Tree (cont.) Table 19-4: Relatives of a given item in an array representation of a complete binary tree Fundamentals of Java

  42. Implementing Heaps Table 19-5: Methods in the interface HeapPT Fundamentals of Java

  43. Implementing Heaps (cont.) • add method: Fundamentals of Java

  44. Implementing Heaps (cont.) • pop method: Fundamentals of Java

  45. Implement Heaps (cont.) • pop method (cont.): Fundamentals of Java

  46. Using a Heap to Implement a Priority Queue Example 19.3: Heap implementation of a priority queue Fundamentals of Java

  47. Using a Heap to Implement a Priority Queue (cont.) Example 19.3: Heap implementation of a priority queue (cont.) Fundamentals of Java

  48. Summary • There are various types of trees or hierarchical collections such as general trees, binary trees, binary search trees, and heaps. • The terminology used to describe hierarchical collections is borrowed from biology, genealogy, and geology. Fundamentals of Java

  49. Summary (cont.) • Tree traversals: preorder, inorder, postorder, and level-order traversal • A binary search tree preserves a natural ordering among its items and can support operations that run in logarithmic time. • Binary search trees are useful for implementing sorted sets and sorted maps. Fundamentals of Java

  50. Summary (cont.) • Heap • Useful for ordering items according to priority • Guarantees logarithmic insertions and removals • Useful for implementing priority queues • Binary search trees typically have a linked implementation. • Heaps typically have an array representation. Fundamentals of Java

More Related