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

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.
Lec 15 April 9 Topics: l binary Trees l expression trees Binary Search Trees (Chapter 5 of text)
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.
1 General Trees & Binary Trees CSC Trees Previous data structures (e.g. lists, stacks, queues) have a linear structure. Linear structures represent.
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,
1 CS308 Data Structures An application of binary trees: Binary Expression Trees.
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.
Chapter Chapter Summary Introduction to Trees Applications of Trees (not currently included in overheads) Tree Traversal Spanning Trees Minimum.
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.
Tree Traversals, TreeSort 20 February Expression Tree Leaves are operands Interior nodes are operators A binary tree to represent (A - B) + C.
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.
Binary Tree. Some Terminologies Short review on binary tree Tree traversals Binary Search Tree (BST)‏ Questions.
Binary Search Trees (BST)
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.
1. Iterative Preorder Traversal Rpreorder(T) 1. [process the root node] if T!= NULL then Write Data(T) else Write “empty Tree” 2. [process the left subtree]
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.
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.
CSCE 3110 Data Structures & Algorithm Analysis
Traversal From CSCE 3110 Data Structures & Algorithm Analysis
Trees Chapter 15.
Binary 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.
CSC 172– Data Structures and Algorithms
Binary Trees, Binary Search Trees
Binary Tree Traversal Methods
General Trees & Binary Trees
Trees Another Abstract Data Type (ADT)
Binary Tree Traversal Methods
Binary Trees.
Trees Another Abstract Data Type (ADT)
CSE 373, Copyright S. Tanimoto, 2002 Binary Trees -
Binary Tree Traversal Methods
Section 9.3 by Andrew Watkins
General Trees & Binary Trees
Binary Trees, Binary Search Trees
Binary Trees.
CSE 373, Copyright S. Tanimoto, 2001 Binary Trees -
Binary Tree Properties & Representation
Chapter 20: Binary Trees.
Binary Tree Traversal.
Trees in Data Structures
Binary Trees, Binary Search Trees
Data Structures Using C++ 2E
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 action (make a clone, display, evaluate the operator, etc.) with respect to this element is taken.

Binary Tree Traversal Methods Preorder Inorder Postorder Level order

Preorder Traversal void preOrder(treePointer ptr) { if (ptr != NULL) visit(t); preOrder(ptr->leftChild); preOrder(ptr->rightChild); } Ptr points to 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 void inOrder(treePointer ptr) { if (ptr != NULL) inOrder(ptr->leftChild); visit(ptr); inOrder(ptr->rightChild); }

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 void postOrder(treePointer ptr) { if (ptr != NULL) postOrder(ptr->leftChild); postOrder(ptr->rightChild); visit(t); }

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.

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

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.