Binary Tree Traversals

Slides:



Advertisements
Similar presentations
Chapter 10, Section 10.3 Tree Traversal
Advertisements

Expression Trees What is an Expression tree? Expression tree implementation Why expression trees? Evaluating an expression tree (pseudo code) Prefix, Infix,
1 Tree Traversal Section 9.3 Longin Jan Latecki Temple University Based on slides by Paul Tymann, Andrew Watkins, and J. van Helden.
©Brooks/Cole, 2003 Chapter 12 Abstract Data Type.
Main Index Contents 11 Main Index Contents Week 6 – Binary Trees.
Trees Chapter Chapter Contents Tree Concepts Hierarchical Organizations Tree Terminology Traversals of a Tree Traversals of a Binary Tree Traversals.
1 Binary Tree Traversals Binary Tree Traversal classification BreadthFirst traversal DepthFirst traversal Accept method of BinaryTree class Binary Tree.
Fall 2007CS 2251 Iterators and Tree Traversals. Fall 2007CS 2252 Binary Trees In a binary tree, each node has at most two subtrees A set of nodes T is.
Tree Traversal. Traversal Algorithms preorder inorder postorder.
Graph Traversals Depth-First Traversal. The Algorithm.
Graph Traversals Depth-First Traversals. –Algorithms. –Example. –Implementation. Breadth-First Traversal. –The Algorithm. –Example. –Implementation. Review.
4/17/2017 Section 9.3 Tree Traversal ch9.3.
Trees Chapter 25 Slides by Steve Armstrong LeTourneau University Longview, TX  2007,  Prentice Hall.
Binary Tree Properties & Representation. Minimum Number Of Nodes Minimum number of nodes in a binary tree whose height is h. At least one node at each.
Graph Traversals General Traversal Algorithm Depth-First Traversals. –Algorithms. –Example. –Implementation. Breadth-First Traversal. –The Algorithm. –Example.
Transforming Infix to Postfix
1 Binary Tree Traversals Binary Tree Traversal classification Tree traversal animations DepthFirst traversal abstraction Accept method of AbstractTree.
Binary Tree Traversal Methods In a traversal of a binary tree, each element of the binary tree is visited exactly once. During the visit of an element,
Trees Chapter 23 Copyright ©2012 by Pearson Education, Inc. All rights reserved.
Chapter 18 - basic definitions - binary trees - tree traversals Intro. to Trees 1CSCI 3333 Data Structures.
Chapter Chapter Summary Introduction to Trees Applications of Trees (not currently included in overheads) Tree Traversal Spanning Trees Minimum.
Trees & Graphs Chapter 25 Carrano, Data Structures and Abstractions with Java, Second Edition, (c) 2007 Pearson Education, Inc. All rights reserved X.
2014-T2 Lecture 24 School of Engineering and Computer Science, Victoria University of Wellington  Marcus Frean, Lindsay Groves, Peter Andreae, and Thomas.
ساختمانهای گسسته دانشگاه صنعتی شاهرود – اردیبهشت 1392.
Ceng-112 Data Structures I 1 Chapter 7 Introduction to Trees.
CS Data Structures Chapter 5 Trees. Chapter 5 Trees: Outline  Introduction  Representation Of Trees  Binary Trees  Binary Tree Traversals 
1 Joe Meehean. A A B B D D I I C C E E X X A A B B D D I I C C E E X X  Terminology each circle is a node pointers are edges topmost node is the root.
Lecture 10 Trees –Definiton of trees –Uses of trees –Operations on a tree.
Topic 14 The BinaryTree ADT Objectives Define trees as data structures Define the terms associated with trees Discuss tree traversal algorithms.
For Monday Read Weiss, chapter 7, sections 1-3. Homework –Weiss, chapter 4, exercise 6. Make sure you include parentheses where appropriate.
Binary Trees 2 Overview Trees. Terminology. Traversal of Binary Trees. Expression Trees. Binary Search Trees.
Compiled by: Dr. Mohammad Omar Alhawarat
Data Structure Chapter# 5 Tree Course Instructor AMEER JAMAL SHAH.
Chapter 6 (cont’) Binary Tree. 6.4 Tree Traversal Tree traversal is the process of visiting each node in the tree exactly one time. This definition does.
Discrete Structures Trees (Ch. 11)
Chap 8 Trees Def 1: A tree is a connected,undirected, graph with no simple circuits. Ex1. Theorem1: An undirected graph is a tree if and only if there.
Chapter 12 Abstract Data Type. Understand the concept of an abstract data type (ADT). Understand the concept of a linear list as well as its operations.
Trees By P.Naga Srinivasu M.tech,(MBA). Basic Tree Concepts A tree consists of finite set of elements, called nodes, and a finite set of directed lines.
© University of Auckland Trees – (cont.) CS 220 Data Structures & Algorithms Dr. Ian Watson.
1 Trees 2 Binary trees Section Binary Trees Definition: A binary tree is a rooted tree in which no vertex has more than two children –Left and.
Tree Implementations Chapter 24 © 2015 Pearson Education, Inc., Upper Saddle River, NJ. All rights reserved. Data Structures and Abstractions with Java,
Trees Ellen Walker CPSC 201 Data Structures Hiram College.
1 Trees General Trees  Nonrecursive definition: a tree consists of a set of nodes and a set of directed edges that connect pairs of nodes.
Binary Tree Implementation. Binary Search Trees (BST) Nodes in Left subtree has smaller values Nodes in right subtree has bigger values.
Data Structures Azhar Maqsood School of Electrical Engineering and Computer Sciences (SEECS-NUST) Binary Trees.
U n i v e r s i t y o f H a i l 1 ICS 202  2011 spring  Data Structures and Algorithms 
Chapter 10 Trees © 2006 Pearson Education Inc., Upper Saddle River, NJ. All rights reserved.
Chapter 7 Trees_ Part2 TREES. Depth and Height 2  Let v be a node of a tree T. The depth of v is the number of ancestors of v, excluding v itself. 
CC 215 DATA STRUCTURES TREES TRAVERSALS Dr. Manal Helal - Fall 2014 Lecture 9 AASTMT Engineering and Technology College 1.
1 Trees. 2 Trees Trees. Binary Trees Tree Traversal.
Chapter 12 Abstract Data Type.
Paul Tymann and Andrew Watkins
Week 6 - Wednesday CS221.
Tree.
CS212: Data Structures and Algorithms
Binary Tree Traversal Methods
Binary Tree Traversal Methods
Trees.
Paul Tymann, Andrew Watkins,
Binary Tree Traversal Methods
Binary Tree Traversals
Section 9.3 by Andrew Watkins
Binary Tree Traversals
Binary Tree Chapter 8 (cont’) Part2.
Paul Tymann, Andrew Watkins,
Binary Tree Traversal Methods
Data Structures Using C++ 2E
Binary Tree Traversals
Graph Traversals Depth-First Traversals. Algorithms. Example.
Binary Tree Iterators Tree Traversals: preorder, inorder, postorder
Presentation transcript:

Binary Tree Traversals Tree Traversal classification BreadthFirst traversal DepthFirst traversals: Pre-order, In-order, and Post-order Reverse DepthFirst traversals Invoking BinaryTree class Traversal Methods accept method of BinaryTree class BinaryTree Iterator Using a BinaryTree Iterator Expression Trees Traversing Expression Trees

Tree Traversal Classification The process of systematically visiting all the nodes in a tree and performing some processing at each node in the tree is called a tree traversal. A traversal starts at the root of the tree and visits every node in the tree exactly once. There are two common methods in which to traverse a tree: Breadth-First Traversal (or Level-order Traversal). Depth-First Traversal: Preorder traversal Inorder traversal (for binary trees only) Postorder traversal

Breadth-First Traversal Let queue be empty; if(tree is not empty) queue.enqueue(tree); while(queue is not empty){ tree = queue.dequeue(); visit(tree root node); if(tree.leftChild is not empty) enqueue(tree.leftChild); if(tree.rightChild is not empty) enqueue(tree.rightChild); } Note: When a tree is enqueued it is the address of the root node of that tree that is enqueued visit means to process the data in the node in some way

Breadth-First Traversal (Contd.) The BinaryTree class breadthFirstTraversal method: public void breadthFirstTraversal(Visitor visitor){ QueueAsLinkedList queue = new QueueAsLinkedList(); if(!isEmpty()) // if the tree is not empty queue.enqueue(this); while(!queue.isEmpty() && !visitor.isDone()){ BinaryTree tree = (BinaryTree)queue.dequeue(); visitor.visit(tree.getKey()); if (!tree.getLeft().isEmpty()) queue.enqueue(tree.getLeft()); if (!tree.getRight().isEmpty()) queue.enqueue(tree.getRight()); }

Breadth-First Traversal (Contd.) Breadth-First traversal visits a tree level-wise from top to bottom K F U P M S T A R

Breadth-First Traversal (Contd.) Exercise: Write a BinaryTree instance method for Reverse Breadth-First Traversal R A T S M P U F K

Depth-First Traversals CODE for each Node: Name public void preorderTraversal(Visitor v){ if(!isEmpty() && ! v.isDone()){ v.visit(getKey()); getLeft().preorderTraversal(v); getRight().preorderTraversal(v); } Visit the node Visit the left subtree, if any. Visit the right subtree, if any. Preorder (N-L-R) public void inorderTraversal(Visitor v){ getLeft().inorderTraversal(v); getRight().inorderTraversal(v); Visit the left subtree, if any. Visit the node Inorder (L-N-R) public void postorderTraversal(Visitor v){ getLeft().postorderTraversal(v) ; getRight().postorderTraversal(v); Postorder (L-R-N)

Preorder Depth-first Traversal N-L-R “A node is visited when passing on its left in the visit path” K F P M A U S R T

Inorder Depth-first Traversal L-N-R “A node is visited when passing below it in the visit path” Note: An inorder traversal can pass through a node without visiting it at that moment. P F A M K S R U T

Postorder Depth-first Traversal L-R-N “A node is visited when passing on its right in the visit path” Note: An postorder traversal can pass through a node without visiting it at that moment. P A M F R S T U K

Reverse Depth-First Traversals There are 6 different depth-first traversals: NLR (pre-order traversal) NRL (reverse pre-order traversal) LNR (in-order traversal) RNL (reverse in-order traversal) LRN (post-order traversal) RLN (reverse post-order traversal) The reverse traversals are not common Exercise: Perform each of the reverse depth-first traversals on the tree:

Invoking BinaryTree Traversal Methods The following code illustrates how to display the contents of a BinaryTree instance using each traversal method: Visitor v = new PrintingVisitor() ; BinaryTree t = new BinaryTree() ; // . . .Initialize t t.breadthFirstTraversal(v) ; t.postorderTraversal(v) ; t.inorderTraversal(v) ;

The accept method of the BinaryTree class Usually the accept method of a container is allowed to visit the elements of the container in any order. A depth-first tree traversal visits the nodes in either preoder or postorder and for Binary trees inorder traversal is also possible. The BinaryTree class accept method does a preorder traversal: public void accept(Visitor visitor) { preorderTraversal(visitor) ; }

BinaryTree class Iterator The BinaryTree class provides a tree iterator that does a preorder traversal. The iterator is implemented as an inner class: private class BinaryTreeIterator implements Iterator{ Stack stack; public BinaryTreeIterator(){ stack = new StackAsLinkedList(); if(!isEmpty()) stack.push(BinaryTree.this); } public boolean hasNext(){ return !stack.isEmpty(); public Object next(){ if(stack.isEmpty())throw new NoSuchElementException(); BinaryTree tree = (BinaryTree)stack.pop(); if (!tree.getRight().isEmpty()) stack.push(tree.getRight()); if (!tree.getLeft().isEmpty()) stack.push(tree.getLeft()); return tree.getKey();

Using BinaryTree class Iterator The iterator() method of the BinaryTree class returns a new instance of the BinaryTreeIterator inner class each time it is called: The following program fragment shows how to use a tree iterator: public Iterator iterator(){ return new BinaryTreeIterator(); } BinaryTree tree = new BinaryTree(); // . . .Initialize tree Iterator i = tree.iterator(); while(i.hasNext(){ Object obj = e.next() ; System.out.print(obj + " "); }

Expression Trees An arithmetic expression or a logic proposition can be represented by a Binary tree: Internal vertices represent operators Leaves represent operands Subtrees are subexpressions A Binary tree representing an expression is called an expression tree. Build the expression tree bottom-up: Construct smaller subtrees Combine the smaller subtrees to form larger subtrees

Expression Trees (Contd.) Example: Create the expression tree of (A + B)2 + (C - 5) / 3

Expression Trees (Contd.) Example: Create the expression tree of the compound proposition: (p  q)  (p  q)

Traversing Expression Trees An inorder traversal of an expression tree produces the original expression (without parentheses), in infix order A preorder traversal produces a prefix expression A postorder traversal produces a postfix expression Infix: A + B ^ 2 + C – 5 / 3 Prefix: + ^ + A B 2 / - C 5 3 Postfix: A B + 2 ^ C 5 - 3 / +