Binary Tree Traversal Methods

Slides:



Advertisements
Similar presentations
CS Fall 2012, Lab 08 Haohan Zhu. Boston University Slideshow Title Goes Here CS Fall 2012, Lab /17/2015 Tree - Data Structure  Basic.
Advertisements

1 Tree Traversal Section 9.3 Longin Jan Latecki Temple University Based on slides by Paul Tymann, Andrew Watkins, and J. van Helden.
Binary Trees, Binary Search Trees CMPS 2133 Spring 2008.
Binary Trees, Binary Search Trees COMP171 Fall 2006.
Kymberly Fergusson CSE1303 Part A Data Structures and Algorithms Summer Semester 2003 Lecture A12 – Binary Trees.
Tree Traversal. Traversal Algorithms preorder inorder postorder.
Kymberly Fergusson CSE1303 Part A Data Structures and Algorithms Summer Semester 2003 Lecture A12 – Binary Trees.
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.
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,
Tree Traversal. Traversal Algorithms preorder inorder postorder.
Tree Traversals & Maps Nelson Padua-Perez Chau-Wen Tseng Department of Computer Science University of Maryland, College Park.
Binary and Other Trees CSE, POSTECH. 2 2 Linear Lists and Trees Linear lists are useful for serially ordered data – (e 1,e 2,e 3,…,e n ) – Days of week.
Trees CS212 & CS-240 D.J. Foreman. What is a Tree A tree is a finite set of one or more nodes such that: –There is a specially designated node called.
Data Structures : Project 5 Data Structures Project 5 – Expression Trees and Code Generation.
Spring 2010CS 2251 Trees Chapter 6. Spring 2010CS 2252 Chapter Objectives Learn to use a tree to represent a hierarchical organization of information.
CISC220 Fall 2009 James Atlas Lecture 13: Trees. Skip Lists.
Binary Trees 2 Overview Trees. Terminology. Traversal of Binary Trees. Expression Trees. Binary Search Trees.
Tree (new ADT) Terminology:  A tree is a collection of elements (nodes)  Each node may have 0 or more successors (called children)  How many does a.
Tree Data Structures.
درختها Trees ساختمان داده ها والگوريتمها مقايسه ليست خطي و درخت Linear lists are useful for serially ordered data. – (e 0, e 1, e 2, …, e n-1 ) – Days.
Discrete Structures Trees (Ch. 11)
Week 7 - Friday.  What did we talk about last time?  Trees in general  Binary search trees.
Lecture - 10 on Data Structures. 6:05:57 PM Prepared by, Jesmin Akhter, Lecturer, IIT,JU.
Binary Trees In computer science, a binary tree is a tree data structure in which each node has at most two children, which are referred to as the left.
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.
Traversing a tree means visiting each node in a specified order. There are different ways to traverse a tree. Tree Traversing Depth first search Pre-orderIn-orderPost-order.
Trees Trees are a very useful data structure. Many different kinds of trees are used in Computer Science. We shall study just a few of these.
AL-HUSEEN BIN TALAL UNIVERSITY College of Engineering Department of Computer Engineering Algorithms and Data Structures Binary Tree Course No.:
Lab 4 Due date: March 29. Linked Representation Each binary tree node is represented as an object whose data type is binaryTreeNode. The space required.
Data Structures Azhar Maqsood School of Electrical Engineering and Computer Sciences (SEECS-NUST) Binary Trees.
Graphs and Trees Mathematical Structures for Computer Science Chapter 5 Copyright © 2006 W.H. Freeman & Co.MSCS SlidesGraphs and Trees.
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. 
DS.T.1 Trees Chapter 4 Overview Tree Concepts Traversals Binary Trees Binary Search Trees AVL Trees Splay Trees B-Trees.
Binary Trees.
Traversal From CSCE 3110 Data Structures & Algorithm Analysis
Trees Chapter 15.
Binary Tree ADT: Properties
Binary Trees.
Binary Trees and Binary Search Trees
Recursive Objects (Part 4)
Paul Tymann and Andrew Watkins
Week 6 - Wednesday CS221.
Trees Another Abstract Data Type (ADT)
Tree.
Csc 2720 Instructor: Zhuojun Duan
Trees Trees are a very useful data structure. Many different kinds of trees are used in Computer Science. We shall study just a few of these.
Section 8.1 Trees.
Tree traversal from Introduction to Trees Chapter 6 Objectives
CSC 172– Data Structures and Algorithms
Binary Trees, Binary Search Trees
Trees Another Abstract Data Type (ADT)
Binary Tree Traversal Methods
Abstract Data Structures
Binary Trees.
Paul Tymann, Andrew Watkins,
Trees Another Abstract Data Type (ADT)
CSE 373, Copyright S. Tanimoto, 2002 Binary Trees -
Binary Tree Traversal Methods
CS-240 Dick Steflik D.J. Foreman
Section 9.3 by Andrew Watkins
Binary Trees, Binary Search Trees
Paul Tymann, Andrew Watkins,
Binary Trees.
CSE 373, Copyright S. Tanimoto, 2001 Binary Trees -
Binary Tree Properties & Representation
Chapter 20: Binary Trees.
Binary Tree Traversal Methods
Binary Tree Traversal.
Binary Trees, Binary Search Trees
Presentation transcript:

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, all actions (make a clone, display, evaluate the operator, etc.) with respect to this element are taken.

Binary Tree Traversal Methods Depth-first search: Preorder ( V L R ) Inorder ( L V R ) Postorder ( L R V ) Breadth-first search: Level order

Preorder Traversal template <class T> void preOrder(binaryTreeNode<T> *t) { if (t != NULL) visit(t); preOrder(t->leftChild); preOrder(t->rightChild); } t is the root of the subtree being traversed.

Preorder Example (visit = print) b c a b c

Preorder Example (visit = print) b c d e f g h i j During the traversal, t starts at the root, moves to the left child b of the root, then to the left child d of b. When the traversal of the left subtree of b is complete, t, once again, points to the node b. The t moves into the right subtree of b. When the traversal of this right subtree is complete, t again points to b. Following this, t points to a. We see that t points to every node in the binary tree three times – once when you get to the node from its parent (or in the case of the root, t is initially at the root), once when you return from the left subtree of the node, and once when you return from the node’s right subtree. Of these three times that t points to a node, the node is visited the first time. a b d g h e i c f j

Preorder Of Expression Tree + a b - c d e f * / / * + a b - c d + e f Gives prefix form of expression!

Inorder Traversal template <class T> void inOrder(binaryTreeNode<T> *t) { if (t != NULL) inOrder(t->leftChild); visit(t); inOrder(t->rightChild); } t is the root of the subtree being traversed.

Inorder Example (visit = print) b c b a c

Inorder Example (visit = print) b c d e f g h i j g d h b e i a f j c

Inorder By Projection (Squishing) a b c d e f g h i j g d h b e i a f j c

Inorder Of Expression Tree + a b - c d e f * / e a + b * c d / f - Gives infix form of expression (sans parentheses)!

Postorder Traversal template <class T> void postOrder(binaryTreeNode<T> *t) { if (t != NULL) postOrder(t->leftChild); postOrder(t->rightChild); visit(t); } t is the root of the subtree being traversed.

Postorder Example (visit = print) b c b c a

Postorder Example (visit = print) b c d e f g h i j g h d i e b j f c a

Postorder Of Expression Tree + a b - c d e f * / a b + c d - * e f + / Gives postfix form of expression!

Traversal Applications b c d e f g h i j Make a clone using postorder traversal … clone the left subtree, clone the right subtree, clone the root in the visit step. Determine height using postorder traversal … determine the height of the left subtree, determine the height of the right subtree, in the visit step add 1 to the max of the already determined heights of the left and right subtrees. Determine number of nodes using preorder, inorder, or postorder traversal … initialize a counter to 0, add 1 to the counter in the visit step. Make a clone. Determine height. Determine number of nodes.

Binary Expression Tree (a + b) * (c – d) / (e + f) / + a b - c d e f * InOrder, PreOrder, PostOrder

Level Order Let t be the tree root. while (t != NULL) { visit t and put its children on a FIFO queue; if FIFO queue is empty, set t = NULL; otherwise, pop a node from the FIFO queue and call it t; }

Level-Order Example (visit = print) b c d e f g h i j a b c d e f g h i j

Binary Tree Construction Suppose that the elements in a binary tree are distinct. Can you construct the binary tree from which a given traversal sequence came? When a traversal sequence has more than one element, the binary tree is not uniquely defined. Therefore, the tree from which the sequence was obtained cannot be reconstructed uniquely.

Some Examples preorder = ab inorder = ab postorder = ab level order = ab a b a b

Binary Tree Construction Can you construct the binary tree, given two traversal sequences? Depends on which two sequences are given.

Preorder And Postorder preorder = ab a b a b postorder = ba Preorder and postorder do not uniquely define a binary tree. Nor do preorder and level order (same example). Nor do postorder and level order (same example).

Inorder And Preorder inorder = g d h b e i a f j c preorder = a b d g h e i c f j Scan the preorder left to right using the inorder to separate left and right subtrees. a is the root of the tree; gdhbei are in the left subtree; fjc are in the right subtree. a gdhbei fjc

Inorder And Preorder preorder = a b d g h e i c f j gdhbei fjc preorder = a b d g h e i c f j b is the next root; gdh are in the left subtree; ei are in the right subtree. a gdh fjc b ei

Inorder And Preorder preorder = a b d g h e i c f j gdh fjc b ei preorder = a b d g h e i c f j d is the next root; g is in the left subtree; h is in the right subtree. a g fjc b ei d h

Inorder And Postorder inorder = g d h b e i a f j c Scan postorder from right to left using inorder to separate left and right subtrees. inorder = g d h b e i a f j c postorder = g h d i e b j f c a Tree root is a; gdhbei are in left subtree; fjc are in right subtree.

Inorder And Level Order Scan level order from left to right using inorder to separate left and right subtrees. inorder = g d h b e i a f j c level order = a b c d e f g h i j Tree root is a; gdhbei are in left subtree; fjc are in right subtree.

To-do Practice on HackerRank: https://www.hackerrank.com/challenges/tree-preorder-traversal https://www.hackerrank.com/challenges/tree-postorder-traversal https://www.hackerrank.com/challenges/tree-inorder-traversal https://www.hackerrank.com/challenges/tree-level-order-traversal