0% found this document useful (0 votes)
42 views28 pages

ch9 3

The document discusses different types of tree traversals including breadth-first, depth-first, preorder, inorder, and postorder traversals. It explains how each traversal visits the nodes in a tree and provides examples of traversing sample trees using queues and stacks. Common applications of tree traversals include representing arithmetic expressions as trees and evaluating expressions in infix, prefix, and postfix notations.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
42 views28 pages

ch9 3

The document discusses different types of tree traversals including breadth-first, depth-first, preorder, inorder, and postorder traversals. It explains how each traversal visits the nodes in a tree and provides examples of traversing sample trees using queues and stacks. Common applications of tree traversals include representing arithmetic expressions as trees and evaluating expressions in infix, prefix, and postfix notations.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 28

Tree Traversal

Section 9.3
Longin Jan Latecki
Temple University
Based on slides by
Paul Tymann, Andrew Watkins,
and J. van Helden
1

Tree Anatomy
The children of a node are, themselves, trees, called subtrees.

Level 0

Level 1

Level 2

Level 3

Root

T
U

Internal Node

Leaf

Z
Child of X

Parent of Z and Y

Subtree

Tree Traversals
One of the most common operations
performed on trees, are a tree traversals
A traversal starts at the root of the tree and
visits every node in the tree exactly once
visit means to process the data in the node

Traversals are either depth-first or breadthfirst


3

Breadth First Traversals


All the nodes in one
level are visited
Followed by the nodes
the at next level
Beginning at the root
For the sample tree

7
6

10

4
3

13

7, 6, 10, 4, 8, 13, 3, 5

Queue and stack


A queue is a sequence of elements
such that each new element is added
(enqueued) to one end, called the
back of the queue, and an element is
removed (dequeued) from the other
end, called the front
A stack is a sequence of elements
such that each new element is added
(or pushed) onto one end, called the
top, and an element is removed
(popped) from the same end

Breadth first tree traversal with a queue


Enqueue root
While queue is not empty
Dequeue a vertex and write it to the output list
Enqueue its children left-to-right

Step Output

Queue

Depth-First Traversals
There are 8 different depth-first traversals

VLR (pre-order traversal)


VRL
LVR (in-order traversal)
RVL
RLV
LRV (post-order traversal)
7

Pre-order Traversal: VLR


Visit the node
Do a pre-order
traversal of the left
subtree
Finish with a pre-order
traversal of the right
subtree
For the sample tree

7
6

10

4
3

13

7, 6, 4, 3, 5, 10, 8, 13

Pre-order tree traversal with a stack


Push root onto the stack
While stack is not empty
Pop a vertex off stack, and write it to the output list
Push its children right-to-left onto stack

Step Output

Stack

Preorder Traversal
Step 1: Visit
r
Step 2: Visit T1 in
preorder
Step 3: Visit T in

preorder

T1

T2

Tn

Step n+1: Visit Tn in


preorder
10

Example
M
A

H
P

E
11

Ordering of the preorder traversal is the same a the


Universal Address System with lexicographic ordering.
M
1 A

R
2.1

1.1

3
H

2.2

2.2.1 2.2.2 2.2.3


M

E
12

In-order Traversal: LVR


Do an in-order
traversal of the left
subtree
Visit the node
Finish with an in-order
traversal of the right
subtree
For the sample tree

7
6

10

4
3

13

3, 4, 5, 6, 7, 8, 10, 13

13

Inorder Traversal
Step 1: Visit T1 in
inorder
Step 2: Visit r
Step 3: Visit T2 in
inorder

T1

T2

Tn

Step n+1: Visit Tn in


inorder
14

Example
M
A

H
P

E
15

inorder (t)
if t != NIL: {
inorder (left[t]);
write (label[t]);
inorder (right[t]); }

Inorder Traversal on a binary search tree.


16

Post-order Traversal: LRV


Do a post-order
traversal of the left
subtree
Followed by a postorder traversal of the
right subtree
Visit the node
For the sample tree

7
6

10

4
3

13

3, 5, 4, 6, 8, 13, 10, 7

17

Postorder Traversal
Step 1: Visit T1 in
postorder
Step 2: Visit T2 in
postorder
Step n: Visit Tn in
postorder
Step
n+1: Visit r

T1

T2

Tn

18

Example
M
A

H
P

M
19

Representing Arithmetic
Expressions
Complicated arithmetic expressions can be
represented by an ordered rooted tree
Internal vertices represent operators
Leaves represent operands

Build the tree bottom-up


Construct smaller subtrees
Incorporate the smaller subtrees as part of larger
subtrees
20

Example
(x+y)2 + (x-3)/(y+2)
+

+
x y

x 3 y 2
21

Infix Notation
Traverse in inorder (LVR) adding parentheses for each
operation

+
x y

x 3 y 2

(((x + y) 2)+((x 3) / (y + 2)))


22

Prefix Notation
(Polish Notation)
Traverse in preorder (VLR)

+
x y

x 3 y 2

+ +x y 2 / x3+y2
23

Evaluating Prefix Notation


In an prefix expression, a binary operator
precedes its two operands
The expression is evaluated right-left
Look for the first operator from the right
Evaluate the operator with the two operands
immediately to its right
24

Example
+
1
+
2
+
1
+
1
+

/ + 2 2 2 / 3 2 +
0
/ + 2 2 2 / 3
1
/ + 2 2 2 / 1
/ + 2 2 2
/ 4 2 1

+ 2 1
3

25

Postfix Notation
(Reverse Polish)
Traverse in postorder (LRV)

+
x y

x 3 y 2

x y +2 x 3 y 2 + / +
26

Evaluating Postfix Notation


In an postfix expression, a binary operator
follows its two operands
The expression is evaluated left-right
Look for the first operator from the left
Evaluate the operator with the two operands
immediately to its left

27

Example
2 2 + 2 / 3 2 1 0 +
/ +
4 2 / 3 2 1 0 + /
+
2 3 2 1 0 + /
+
2 1 1 0 + /
+
2 1 1 / +
2 1 +
3

28

You might also like