Trees
description
Transcript of Trees
![Page 1: Trees](https://reader036.fdocuments.us/reader036/viewer/2022062723/56813c26550346895da5a017/html5/thumbnails/1.jpg)
Trees
Chapter 8
![Page 2: Trees](https://reader036.fdocuments.us/reader036/viewer/2022062723/56813c26550346895da5a017/html5/thumbnails/2.jpg)
Chapter 8: Trees 2
Chapter Objectives
• To learn how to use a tree to represent a hierarchical organization of information
• To learn how to use recursion to process trees• To understand the different ways of traversing a tree• To understand the difference between binary trees,
binary search trees, and heaps• To learn how to implement binary trees, binary search
trees, and heaps using linked data structures and arrays
![Page 3: Trees](https://reader036.fdocuments.us/reader036/viewer/2022062723/56813c26550346895da5a017/html5/thumbnails/3.jpg)
Chapter 8: Trees 3
Chapter Objectives (continued)
• To learn how to use a binary search tree to store information so that it can be retrieved in an efficient manner
• To learn how to use a Huffman tree to encode characters using fewer bytes than ASCII or Unicode, resulting in smaller files and reduced storage requirements
![Page 4: Trees](https://reader036.fdocuments.us/reader036/viewer/2022062723/56813c26550346895da5a017/html5/thumbnails/4.jpg)
Chapter 8: Trees 4
Tree Terminology
• A tree consists of a collection of elements or nodes, with each node linked to its successors
• The node at the top of a tree is called its root• The links from a node to its successors are called
branches• The successors of a node are called its children• The predecessor of a node is called its parent
![Page 5: Trees](https://reader036.fdocuments.us/reader036/viewer/2022062723/56813c26550346895da5a017/html5/thumbnails/5.jpg)
Chapter 8: Trees 5
Tree Terminology (continued)
• Each node in a tree has exactly one parent except for the root node, which has no parent
• Nodes that have the same parent are siblings• A node that has no children is called a leaf node• A generalization of the parent-child relationship is the
ancestor-descendent relationship
![Page 6: Trees](https://reader036.fdocuments.us/reader036/viewer/2022062723/56813c26550346895da5a017/html5/thumbnails/6.jpg)
Chapter 8: Trees 6
Tree Terminology (continued)
• A subtree of a node is a tree whose root is a child of that node
• The level of a node is a measure of its distance from the root
![Page 7: Trees](https://reader036.fdocuments.us/reader036/viewer/2022062723/56813c26550346895da5a017/html5/thumbnails/7.jpg)
Chapter 8: Trees 7
Binary Trees
• In a binary tree, each node has at most two subtrees• A set of nodes T is a binary tree if either of the following
is true• T is empty• Its root node has two subtrees, TL and TR, such that
TL and TR are binary trees
![Page 8: Trees](https://reader036.fdocuments.us/reader036/viewer/2022062723/56813c26550346895da5a017/html5/thumbnails/8.jpg)
Chapter 8: Trees 8
Some Types of Binary Trees
• Expression tree• Each node contains an operator or an operand
• Huffman tree• Represents Huffman codes for characters that might
appear in a text file• Huffman code uses different numbers of bits to
encode letters as opposed to ASCII or Unicode• Binary search trees
• All elements in the left subtree precede those in the right subtree
![Page 9: Trees](https://reader036.fdocuments.us/reader036/viewer/2022062723/56813c26550346895da5a017/html5/thumbnails/9.jpg)
Chapter 8: Trees 9
Some Types of Binary Trees (continued)
![Page 10: Trees](https://reader036.fdocuments.us/reader036/viewer/2022062723/56813c26550346895da5a017/html5/thumbnails/10.jpg)
Chapter 8: Trees 10
Fullness and Completeness
• Trees grow from the top down• Each new value is inserted in a new leaf node• A binary tree is full if every node has two children except
for the leaves
![Page 11: Trees](https://reader036.fdocuments.us/reader036/viewer/2022062723/56813c26550346895da5a017/html5/thumbnails/11.jpg)
Chapter 8: Trees 11
General Trees
• Nodes of a general tree can have any number of subtrees
• A general tree can be represented using a binary tree
![Page 12: Trees](https://reader036.fdocuments.us/reader036/viewer/2022062723/56813c26550346895da5a017/html5/thumbnails/12.jpg)
Chapter 8: Trees 12
Tree Traversals
• Often we want to determine the nodes of a tree and their relationship• Can do this by walking through the tree in a
prescribed order and visiting the nodes as they are encountered
• This process is called tree traversal
• Three kinds of tree traversal• Inorder• Preorder• Postorder
![Page 13: Trees](https://reader036.fdocuments.us/reader036/viewer/2022062723/56813c26550346895da5a017/html5/thumbnails/13.jpg)
Chapter 8: Trees 13
Tree Traversals (continued)
• Preorder: Visit root node, traverse TL, traverse TR• Inorder: Traverse TL, visit root node, traverse TR• Postorder: Traverse TL, Traverse TR, visit root node
![Page 14: Trees](https://reader036.fdocuments.us/reader036/viewer/2022062723/56813c26550346895da5a017/html5/thumbnails/14.jpg)
Chapter 8: Trees 14
Visualizing Tree Traversals
• You can visualize a tree traversal by imagining a mouse that walks along the edge of the tree• If the mouse always keeps the tree to the left, it will
trace a route known as the Euler tour• Preorder traversal if we record each node as the mouse first
encounters it• Inorder if each node is recorded as the mouse returns from
traversing its left subtree• Postorder if we record each node as the mouse last
encounters it
![Page 15: Trees](https://reader036.fdocuments.us/reader036/viewer/2022062723/56813c26550346895da5a017/html5/thumbnails/15.jpg)
Chapter 8: Trees 15
Traversals of Binary Search Trees and Expression Trees
• An inorder traversal of a binary search tree results in the nodes being visited in sequence by increasing data value
• An inorder traversal of an expression tree inserts parenthesis where they belong (infix form)
• A postorder traversal of an expression tree results in postfix form
![Page 16: Trees](https://reader036.fdocuments.us/reader036/viewer/2022062723/56813c26550346895da5a017/html5/thumbnails/16.jpg)
Chapter 8: Trees 16
The Node Class
• Just as for a linked list, a node consists of a data part and links to successor nodes
• The data part is a reference to type Object• A binary tree node must have links to both its left and
right subtrees
![Page 17: Trees](https://reader036.fdocuments.us/reader036/viewer/2022062723/56813c26550346895da5a017/html5/thumbnails/17.jpg)
Chapter 8: Trees 17
The BinaryTree Class
![Page 18: Trees](https://reader036.fdocuments.us/reader036/viewer/2022062723/56813c26550346895da5a017/html5/thumbnails/18.jpg)
Chapter 8: Trees 18
The BinaryTree Class (continued)
![Page 19: Trees](https://reader036.fdocuments.us/reader036/viewer/2022062723/56813c26550346895da5a017/html5/thumbnails/19.jpg)
Chapter 8: Trees 19
Overview of a Binary Search Tree
• Binary search tree definition• A set of nodes T is a binary search tree if either of the
following is true• T is empty• Its root has two subtrees such that each is a binary search
tree and the value in the root is greater than all values of the left subtree but less than all values in the right subtree
![Page 20: Trees](https://reader036.fdocuments.us/reader036/viewer/2022062723/56813c26550346895da5a017/html5/thumbnails/20.jpg)
Chapter 8: Trees 20
Searching a Binary Tree
![Page 21: Trees](https://reader036.fdocuments.us/reader036/viewer/2022062723/56813c26550346895da5a017/html5/thumbnails/21.jpg)
Chapter 8: Trees 21
Class TreeSet and Interface Search Tree
![Page 22: Trees](https://reader036.fdocuments.us/reader036/viewer/2022062723/56813c26550346895da5a017/html5/thumbnails/22.jpg)
Chapter 8: Trees 22
BinarySearchTree Class
![Page 23: Trees](https://reader036.fdocuments.us/reader036/viewer/2022062723/56813c26550346895da5a017/html5/thumbnails/23.jpg)
Chapter 8: Trees 23
Insertion into a Binary Search Tree
![Page 24: Trees](https://reader036.fdocuments.us/reader036/viewer/2022062723/56813c26550346895da5a017/html5/thumbnails/24.jpg)
Chapter 8: Trees 24
Removing from a Binary Search Tree
![Page 25: Trees](https://reader036.fdocuments.us/reader036/viewer/2022062723/56813c26550346895da5a017/html5/thumbnails/25.jpg)
Chapter 8: Trees 25
Removing from a Binary Search Tree (continued)
![Page 26: Trees](https://reader036.fdocuments.us/reader036/viewer/2022062723/56813c26550346895da5a017/html5/thumbnails/26.jpg)
Chapter 8: Trees 26
Heaps and Priority Queues
• In a heap, the value in a node is les than all values in its two subtrees
• A heap is a complete binary tree with the following properties• The value in the root is the smallest item in the tree• Every subtree is a heap
![Page 27: Trees](https://reader036.fdocuments.us/reader036/viewer/2022062723/56813c26550346895da5a017/html5/thumbnails/27.jpg)
Chapter 8: Trees 27
Removing an Item from a Heap
![Page 28: Trees](https://reader036.fdocuments.us/reader036/viewer/2022062723/56813c26550346895da5a017/html5/thumbnails/28.jpg)
Chapter 8: Trees 28
Implementing a Heap
• Because a heap is a complete binary tree, it can be implemented efficiently using an array instead of a linked data structure
• First element for storing a reference to the root data• Use next two elements for storing the two children of the
root• Use elements with subscripts 3, 4, 5, and 6 for storing
the four children of these two nodes and so on
![Page 29: Trees](https://reader036.fdocuments.us/reader036/viewer/2022062723/56813c26550346895da5a017/html5/thumbnails/29.jpg)
Chapter 8: Trees 29
Inserting into a Heap Implemented as an ArrayList
![Page 30: Trees](https://reader036.fdocuments.us/reader036/viewer/2022062723/56813c26550346895da5a017/html5/thumbnails/30.jpg)
Chapter 8: Trees 30
Inserting into a Heap Implemented as an ArrayList (continued)
![Page 31: Trees](https://reader036.fdocuments.us/reader036/viewer/2022062723/56813c26550346895da5a017/html5/thumbnails/31.jpg)
Chapter 8: Trees 31
Priority Queues
• The heap is used to implement a special kind of queue called a priority queue
• The heap is not very useful as an ADT on its own• Will not create a Heap interface or code a class that
implements it• Will incorporate its algorithms when we implement a
priority queue class and Heapsort• Sometimes a FIFO queue may not be the best way to
implement a waiting line• A priority queue is a data structure in which only the
highest-priority item is accessible
![Page 32: Trees](https://reader036.fdocuments.us/reader036/viewer/2022062723/56813c26550346895da5a017/html5/thumbnails/32.jpg)
Chapter 8: Trees 32
Insertion into a Priority Queue
![Page 33: Trees](https://reader036.fdocuments.us/reader036/viewer/2022062723/56813c26550346895da5a017/html5/thumbnails/33.jpg)
Chapter 8: Trees 33
The PriorityQueue Interface
• Effectively the same as the Queue interface provided in chapter six
![Page 34: Trees](https://reader036.fdocuments.us/reader036/viewer/2022062723/56813c26550346895da5a017/html5/thumbnails/34.jpg)
Chapter 8: Trees 34
Design of a HeapPriorityQueue Class
![Page 35: Trees](https://reader036.fdocuments.us/reader036/viewer/2022062723/56813c26550346895da5a017/html5/thumbnails/35.jpg)
Chapter 8: Trees 35
HeapPQwithComparator
![Page 36: Trees](https://reader036.fdocuments.us/reader036/viewer/2022062723/56813c26550346895da5a017/html5/thumbnails/36.jpg)
Chapter 8: Trees 36
Huffman Trees
• A Huffman tree can be implemented using a binary tree and a PriorityQueue
• A straight binary encoding of an alphabet assigns a unique binary number to each symbol in the alphabet• Unicode for example
• The message “go eagles” requires 144 bits in Unicode but only 38 using Huffman coding
![Page 37: Trees](https://reader036.fdocuments.us/reader036/viewer/2022062723/56813c26550346895da5a017/html5/thumbnails/37.jpg)
Chapter 8: Trees 37
Huffman Trees (continued)
![Page 38: Trees](https://reader036.fdocuments.us/reader036/viewer/2022062723/56813c26550346895da5a017/html5/thumbnails/38.jpg)
Chapter 8: Trees 38
Chapter Review
• A tree is a recursive, nonlinear data structure that is used to represent data that is organized as a hierarchy
• A binary tree is a collection of nodes with three components: a reference to a data object, a reference to a left subtree, and a reference to a right subtree
• In a binary tree used for arithmetic expressions, the root node should store the operator that is evaluated last
• A binary search tree is a tree in which the data stored in the left subtree of every node is less than the data stored in the root node, and the data stored in the right subtree is greater than the data stored in the root node
![Page 39: Trees](https://reader036.fdocuments.us/reader036/viewer/2022062723/56813c26550346895da5a017/html5/thumbnails/39.jpg)
Chapter 8: Trees 39
Chapter Review (continued)
• A heap is a complete binary tree in which the data in each node is less than the data in both its subtrees
• Insertion and removal in a heap are both O(log n)• A Huffman tree is a binary tree used to store a code that
facilitates file compression