400 likes | 409 Views
Learn about hierarchical organization, tree terminology, binary trees, and tree traversal techniques. Explore Java interfaces for tree operations and examples of general trees.
E N D
Trees Chapter 24
Tree Concepts Hierarchical Organizations Tree Terminology Traversals of a Tree Traversals of a Binary Tree Traversals of a General Tree Java Interfaces for Trees Interfaces for All Trees Interface for Binary Examples of Binary Trees Expression Trees Decision Trees Binary Search Trees Examples of General Trees Parse Trees Game Trees Chapter Contents
Tree Concepts • Previous data organizations place data in linear order • Some data organizations require categorizing data into groups, subgroups • This is hierarchical classification • Data items appear at various levels within the organization
Hierarchical Organization • Example: File directories Fig. 24-1 Computer files organized into folders.
Hierarchical Organization • Example: A university's organization Fig. 24-2 A university's administrative structure.
Hierarchical Organization • Example: Family trees Fig. 24-3 Carole's children and grandchildren.
Hierarchical Organization • Example: Family trees Fig. 24-4 Jared's parents and grandparents.
Tree Terminology • A tree is • A set of nodes • Connected by edges • The edges indicate relationships among nodes • Nodes arranged in levels • Indicate the nodes' hierarchy • Top level is a single node called the root
Tree Terminology Fig. 24-5 A tree equivalent to the tree in Fig. 24-1
Tree Terminology • Nodes at a given level are children of nodes of previous level • Node with children is the parent node of those children • Nodes with same parent are siblings • Node with no children is a leaf node • The only node with no parent is the root node • All others have one parent each
Tree Terminology • Empty trees? • Some authors specify a general tree must have at least the root node • This text will allow all trees to be empty • A node is reached from the root by a path • The length of the path is the number of edges that compose it • The height of a tree is the number of levels in the tree • The subtree of a node is a tree rooted at a child of that node
Binary Trees • Each node has at most two children Fig. 24-6 Three binary trees.
Binary Trees • A binary tree is either empty or has the following form • Where Tleft and Tright are binary trees
Binary Trees • Every nonleaf in a full binary tree has exactly two children • A complete binary tree is full to its next-to-last level • Leaves on last level filled from left to right • The height of a binary tree with n nodes that is either complete or full is log2(n + 1)
Binary Trees Fig. 24-7 The number of nodes in a full binary tree as a function of the tree's height.
Traversals of a Tree • Visiting a node • Processing the data within a node • This is the action performed on each node during traversal of a tree • A traversal can pass through a node without visiting it at that moment • For a binary tree • Visit the root • Visit all nodes in the root's left subtree • Visit all nodes in the root's right subtree
Traversals of a Tree • Preorder traversal: visit root before the subtrees Fig. 24-8 The visitation order of a preorder traversal.
Traversals of a Tree • Inorder traversal: visit root between visiting the subtrees Fig. 24-9 The visitation order of an inorder traversal.
Traversals of a Tree • Postorder traversal: visit root after visiting the subtrees These are examples of a depth-first traversal. Fig. 24-10 The visitation order of a postorder traversal.
Traversals of a Tree • Level-order traversal: begin at the root, visit nodes one level at a time This is an example of a breadth-first traversal. Fig. 24-11 The visitation order of a level-order traversal.
Traversals of a General Tree • A general tree has traversals that are in • Level order • Preorder • Postorder • Inorder traversal not well defined for a general tree
Traversals of a General Tree Fig.24-12 The visitation order of two traversals of a general tree: (a) preorder; (b) postorder.
Java Interfaces for Trees • An interface that specifies operations common to all trees public interface TreeInterface{ public Object getRootData();public int getHeight();public int getNumberOfNodes();public boolean isEmpty(); public void clear();} // end TreeInterface
Java Interfaces for Trees • Interface for iterators for various traversals import java.util.Iterator;public interface TreeIteratorInterface{ public Iterator getPreorderIterator();public Iterator getPostorderIterator();public Iterator getInorderIterator();public Iterator getLevelOrderIterator();} // end TreeIteratorInterface
Java Interfaces for Trees • Interface for a class of binary trees public interface BinaryTreeInterface extends TreeInterface, TreeIteratorInterface{ /** Sets an existing binary tree to a new one-node binary tree. * @param rootData an object that is the data in the new tree’s root */public void setTree(Object rootData); /** Sets an existing binary tree to a new binary tree. * @param rootData an object that is the data in the new tree’s root * @param leftTree the left subtree of the new tree * @param rightTree the right subtree of the new tree */public void setTree(Object rootData,| BinaryTreeInterface leftTree, BinaryTreeInterface rightTree);} // end BinaryTreeInterface
Java Interfaces for Trees Fig. 24-13 A binary tree whose nodes contain one-letter strings.
Examples of Binary Trees • Expression Trees Fig. 24-14 Expression trees for four algebraic expressions.
Examples of Binary Trees • Algorithm for evaluating an expression tree in postorder traversal Algorithm evaluate(expressionTree)if (expressionTree is empty)return 0else{ firstOperand = evaluate(left subtree of expressionTree) secondOperand = evaluate(right subtree of expressionTree) operator = the root of expressionTreereturn the result of the operation operator and its operandsfirstOperand and secondOperand}
Decision Trees • A decision tree can be the basis of an expert system • Helps users solve problems, make decisions Fig. 24-15 A binary decision tree.
Decision Trees • A possible Java interface for a binary decision tree. public interface DecisionTreeInterface extends BinaryTreeInterface{ /** Task: Gets the data in the current node. * @return the data object in the current node */public Object getCurrentData(); /** Task: Determines whether current node contains an answer. * @return true if the current node is a leaf */public boolean isAnswer(); /** Task: Moves the current node to the left (right) child of the current node. */public void advanceToNo();public void advanceToYes(); /** Task: Sets the current node to the root of the tree.*/public void reset();} // end DecisionTreeInterface
Decision Trees Fig. 24-16 An initial decision tree for a guessing game.
Decision Trees Fig. 24-17 The decision tree for a guessing game after acquiring another fact.
Binary Search Trees • A search tree organizes its data so that a search is more efficient • Binary search tree • Nodes contain Comparable objects • A node's data is greater than the data in the node's left subtree • A node's data is less than the data in the node's right subtree
Binary Search Trees Fig. 24-18 A binary search tree of names.
Binary Search Trees Fig. 24-19 Two binary search trees containing the same names as the tree in Fig. 24-18
Binary Search Trees • An algorithm for searching a binary search tree Algorithm bstSearch(binarySearchTree, desiredObject)// Searches a binary search tree for a given object.// Returns true if the object is found.if (binarySearchTree is empty)return falseelse if (desiredObject == object in the root of binarySearchTree)return trueelse if (desiredObject < object in the root of binarySearchTree)return bstSearch(left subtree of binarySearchTree, desiredObject)else return bstSearch(right subtree of binarySearchTree, desiredObject)
Heaps • A complete binary tree • Nodes contain Comparable objects • Each node contains no smaller (or no larger) than objects in its descendants • Maxheap • Object in a node is ≥ its descendant objects • Minheap • Object in a node is ≤ descendant objects
Heaps Fig. 24-20 (a) A maxheap and (b) a minheap that contain the same values
Examples of General Trees Fig. 24-21 A parse tree for the algebraic expression a * (b + c)
Examples of General Trees Fig. 24-22 A portion of a game tree for tic-tac-toe