You are on page 1of 71

Tree Traversal

Traversal Algorithms
preorder
inorder
postorder
PreOrder Traversal
Inorder Traversal
Postorder Traversal
In which order does a preorder traversal visit
the vertices in this ordered rooted tree?
procedure preorder(T: ordered rooted tree)
r := root of T
list r
for each child c of r from left to right
begin
T(c) := subtree with c as its root
preorder(T(c))
end
output:
In which order does a preorder traversal visit
the vertices in this ordered rooted tree?
procedure preorder(T: ordered rooted tree)
r := root of T
list r
for each child c of r from left to right
begin
T(c) := subtree with c as its root
preorder(T(c))
end
output: a
In which order does a preorder traversal visit
the vertices in this ordered rooted tree?
procedure preorder(T: ordered rooted tree)
r := root of T
list r
for each child c of r from left to right
begin
T(c) := subtree with c as its root
preorder(T(c))
end
output: a
for each of {b, c, d}
In which order does a preorder traversal visit
the vertices in this ordered rooted tree?
procedure preorder(T: ordered rooted tree)
r := root of T
list r
for each child c of r from left to right
begin
T(c) := subtree with c as its root
preorder(T(c))
end
output: a
for each of {b, c, d}
In which order does a preorder traversal visit
the vertices in this ordered rooted tree?
procedure preorder(T: ordered rooted tree)
r := root of T
list r
for each child c of r from left to right
begin
T(c) := subtree with c as its root
preorder(T(c))
end
output: a b
In which order does a preorder traversal visit
the vertices in this ordered rooted tree?
procedure preorder(T: ordered rooted tree)
r := root of T
list r
for each child c of r from left to right
begin
T(c) := subtree with c as its root
preorder(T(c))
end
output: a b
for each of {e, f}
In which order does a preorder traversal visit
the vertices in this ordered rooted tree?
procedure preorder(T: ordered rooted tree)
r := root of T
list r
for each child c of r from left to right
begin
T(c) := subtree with c as its root
preorder(T(c))
end
output: a b
for each of {e, f}
In which order does a preorder traversal visit
the vertices in this ordered rooted tree?
procedure preorder(T: ordered rooted tree)
r := root of T
list r
for each child c of r from left to right
begin
T(c) := subtree with c as its root
preorder(T(c))
end
output: a b e
In which order does a preorder traversal visit
the vertices in this ordered rooted tree?
procedure preorder(T: ordered rooted tree)
r := root of T
list r
for each child c of r from left to right
begin
T(c) := subtree with c as its root
preorder(T(c))
end
output: a b e
for each of {j, k}
In which order does a preorder traversal visit
the vertices in this ordered rooted tree?
procedure preorder(T: ordered rooted tree)
r := root of T
list r
for each child c of r from left to right
begin
T(c) := subtree with c as its root
preorder(T(c))
end
output: a b e
for each of {j, k}
In which order does a preorder traversal visit
the vertices in this ordered rooted tree?
procedure preorder(T: ordered rooted tree)
r := root of T
list r
for each child c of r from left to right
begin
T(c) := subtree with c as its root
preorder(T(c))
end
output: a b e j
In which order does a preorder traversal visit
the vertices in this ordered rooted tree?
procedure preorder(T: ordered rooted tree)
r := root of T
list r
for each child c of r from left to right
begin
T(c) := subtree with c as its root
preorder(T(c))
end
output: a b e j
for each of {}
In which order does a preorder traversal visit
the vertices in this ordered rooted tree?
procedure preorder(T: ordered rooted tree)
r := root of T
list r
for each child c of r from left to right
begin
T(c) := subtree with c as its root
preorder(T(c))
end
output: a b e j
for each of {j, k}
In which order does a preorder traversal visit
the vertices in this ordered rooted tree?
procedure preorder(T: ordered rooted tree)
r := root of T
list r
for each child c of r from left to right
begin
T(c) := subtree with c as its root
preorder(T(c))
end
output: a b e j k
In which order does a preorder traversal visit
the vertices in this ordered rooted tree?
procedure preorder(T: ordered rooted tree)
r := root of T
list r
for each child c of r from left to right
begin
T(c) := subtree with c as its root
preorder(T(c))
end
output: a b e j k
for each of {n, o, p}
In which order does a preorder traversal visit
the vertices in this ordered rooted tree?
procedure preorder(T: ordered rooted tree)
r := root of T
list r
for each child c of r from left to right
begin
T(c) := subtree with c as its root
preorder(T(c))
end
output: a b e j k
for each of {n, o, p}
In which order does a preorder traversal visit
the vertices in this ordered rooted tree?
procedure preorder(T: ordered rooted tree)
r := root of T
list r
for each child c of r from left to right
begin
T(c) := subtree with c as its root
preorder(T(c))
end
output: a b e j k n
In which order does a preorder traversal visit
the vertices in this ordered rooted tree?
procedure preorder(T: ordered rooted tree)
r := root of T
list r
for each child c of r from left to right
begin
T(c) := subtree with c as its root
preorder(T(c))
end
output: a b e j k n
for each of {}
In which order does a preorder traversal visit
the vertices in this ordered rooted tree?
procedure preorder(T: ordered rooted tree)
r := root of T
list r
for each child c of r from left to right
begin
T(c) := subtree with c as its root
preorder(T(c))
end
output: a b e j k n
for each of {n, o, p}
In which order does a preorder traversal visit
the vertices in this ordered rooted tree?
procedure preorder(T: ordered rooted tree)
r := root of T
list r
for each child c of r from left to right
begin
T(c) := subtree with c as its root
preorder(T(c))
end
output: a b e j k n o
In which order does a preorder traversal visit
the vertices in this ordered rooted tree?
procedure preorder(T: ordered rooted tree)
r := root of T
list r
for each child c of r from left to right
begin
T(c) := subtree with c as its root
preorder(T(c))
end
output: a b e j k n o
for each of {}
In which order does a preorder traversal visit
the vertices in this ordered rooted tree?
procedure preorder(T: ordered rooted tree)
r := root of T
list r
for each child c of r from left to right
begin
T(c) := subtree with c as its root
preorder(T(c))
end
output: a b e j k n o
for each of {n, o, p}
In which order does a preorder traversal visit
the vertices in this ordered rooted tree?
procedure preorder(T: ordered rooted tree)
r := root of T
list r
for each child c of r from left to right
begin
T(c) := subtree with c as its root
preorder(T(c))
end
output: a b e j k n o p
In which order does a preorder traversal visit
the vertices in this ordered rooted tree?
procedure preorder(T: ordered rooted tree)
r := root of T
list r
for each child c of r from left to right
begin
T(c) := subtree with c as its root
preorder(T(c))
end
output: a b e j k n o p
for each of {}
In which order does a preorder traversal visit
the vertices in this ordered rooted tree?
procedure preorder(T: ordered rooted tree)
r := root of T
list r
for each child c of r from left to right
begin
T(c) := subtree with c as its root
preorder(T(c))
end
output: a b e j k n o p
for each of {n, o, p}
In which order does a preorder traversal visit
the vertices in this ordered rooted tree?
procedure preorder(T: ordered rooted tree)
r := root of T
list r
for each child c of r from left to right
begin
T(c) := subtree with c as its root
preorder(T(c))
end
output: a b e j k n o p
for each of {j, k}
In which order does a preorder traversal visit
the vertices in this ordered rooted tree?
procedure preorder(T: ordered rooted tree)
r := root of T
list r
for each child c of r from left to right
begin
T(c) := subtree with c as its root
preorder(T(c))
end
output: a b e j k n o p
for each of {e, f}
In which order does a preorder traversal visit
the vertices in this ordered rooted tree?
procedure preorder(T: ordered rooted tree)
r := root of T
list r
for each child c of r from left to right
begin
T(c) := subtree with c as its root
preorder(T(c))
end
output: a b e j k n o p f
In which order does a preorder traversal visit
the vertices in this ordered rooted tree?
procedure preorder(T: ordered rooted tree)
r := root of T
list r
for each child c of r from left to right
begin
T(c) := subtree with c as its root
preorder(T(c))
end
output: a b e j k n o p f
for each of {}
In which order does a preorder traversal visit
the vertices in this ordered rooted tree?
procedure preorder(T: ordered rooted tree)
r := root of T
list r
for each child c of r from left to right
begin
T(c) := subtree with c as its root
preorder(T(c))
end
output: a b e j k n o p f
for each of {e, f}
In which order does a preorder traversal visit
the vertices in this ordered rooted tree?
procedure preorder(T: ordered rooted tree)
r := root of T
list r
for each child c of r from left to right
begin
T(c) := subtree with c as its root
preorder(T(c))
end
output: a b e j k n o p f
for each of {b, c, d}
In which order does a preorder traversal visit
the vertices in this ordered rooted tree?
procedure preorder(T: ordered rooted tree)
r := root of T
list r
for each child c of r from left to right
begin
T(c) := subtree with c as its root
preorder(T(c))
end
output: a b e j k n o p f c d g l m h i
In which order does a inorder traversal visit
the vertices in this ordered rooted tree?
procedure inorder(T: ordered rooted tree)
r := root of T
if r is a leaf then list r
else
begin
l:= first child of r from left to right
T(l) := subtree with l as its root
inorder(T(l))
list r
for each child c of r except for l left to right
T(c) := subtree with c as its root
preorder(T(c))
end
output:
In which order does a inorder traversal visit
the vertices in this ordered rooted tree?
procedure inorder(T: ordered rooted tree)
r := root of T
if r is a leaf then list r
else
begin
l:= first child of r from left to right
T(l) := subtree with l as its root
inorder(T(l))
list r
for each child c of r except for l left to right
T(c) := subtree with c as its root
preorder(T(c))
end
output:
call
stack
r = a, l = ?
s = {}
In which order does a inorder traversal visit
the vertices in this ordered rooted tree?
procedure inorder(T: ordered rooted tree)
r := root of T
if r is a leaf then list r
else
begin
l:= first child of r from left to right
T(l) := subtree with l as its root
inorder(T(l))
list r
for each child c of r except for l left to right
T(c) := subtree with c as its root
preorder(T(c))
end
output:
r = a, l = b
s = {}
call
stack
In which order does a inorder traversal visit
the vertices in this ordered rooted tree?
procedure inorder(T: ordered rooted tree)
r := root of T
if r is a leaf then list r
else
begin
l:= first child of r from left to right
T(l) := subtree with l as its root
inorder(T(l))
list r
for each child c of r except for l left to right
T(c) := subtree with c as its root
preorder(T(c))
end
output:
r = a, l = b
s = {}
r = b, l = ?
s = {}
call
stack
In which order does a inorder traversal visit
the vertices in this ordered rooted tree?
procedure inorder(T: ordered rooted tree)
r := root of T
if r is a leaf then list r
else
begin
l:= first child of r from left to right
T(l) := subtree with l as its root
inorder(T(l))
list r
for each child c of r except for l left to right
T(c) := subtree with c as its root
preorder(T(c))
end
output:
r = a, l = b
s = {}
r = b, l = e
s = {}
call
stack
In which order does a inorder traversal visit
the vertices in this ordered rooted tree?
procedure inorder(T: ordered rooted tree)
r := root of T
if r is a leaf then list r
else
begin
l:= first child of r from left to right
T(l) := subtree with l as its root
inorder(T(l))
list r
for each child c of r except for l left to right
T(c) := subtree with c as its root
preorder(T(c))
end
output:
r = a, l = b
s = {}
r = b, l = e
s = {}
r = e, l = ?
s = {}
call
stack
In which order does a inorder traversal visit
the vertices in this ordered rooted tree?
procedure inorder(T: ordered rooted tree)
r := root of T
if r is a leaf then list r
else
begin
l:= first child of r from left to right
T(l) := subtree with l as its root
inorder(T(l))
list r
for each child c of r except for l left to right
T(c) := subtree with c as its root
preorder(T(c))
end
output: j
r = a, l = b
s = {}
r = b, l = e
s = {}
r = e, l = j
s = {}
call
stack
In which order does a inorder traversal visit
the vertices in this ordered rooted tree?
procedure inorder(T: ordered rooted tree)
r := root of T
if r is a leaf then list r
else
begin
l:= first child of r from left to right
T(l) := subtree with l as its root
inorder(T(l))
list r
for each child c of r except for l left to right
T(c) := subtree with c as its root
preorder(T(c))
end
output: j
r = a, l = b
s = {}
r = b, l = e
s = {}
r = e, l = j
s = {}
r = j, l = ?
s = {}
call
stack
In which order does a inorder traversal visit
the vertices in this ordered rooted tree?
procedure inorder(T: ordered rooted tree)
r := root of T
if r is a leaf then list r
else
begin
l:= first child of r from left to right
T(l) := subtree with l as its root
inorder(T(l))
list r
for each child c of r except for l left to right
T(c) := subtree with c as its root
preorder(T(c))
end
output: j e
r = a, l = b
s = {}
r = b, l = e
s = {}
r =e, l = j
s = {}
call
stack
In which order does a inorder traversal visit
the vertices in this ordered rooted tree?
procedure inorder(T: ordered rooted tree)
r := root of T
if r is a leaf then list r
else
begin
l:= first child of r from left to right
T(l) := subtree with l as its root
inorder(T(l))
list r
for each child c of r except for l left to right
T(c) := subtree with c as its root
preorder(T(c))
end
output: j e
r = a, l = b
s = {}
r = b, l = e
s = {}
r = e, l = j
s = {k}
call
stack
In which order does a inorder traversal visit
the vertices in this ordered rooted tree?
procedure inorder(T: ordered rooted tree)
r := root of T
if r is a leaf then list r
else
begin
l:= first child of r from left to right
T(l) := subtree with l as its root
inorder(T(l))
list r
for each child c of r except for l left to right
T(c) := subtree with c as its root
preorder(T(c))
end
output: j e
r = a, l = b
s = {}
r = b, l = e
s = {}
r = e, l = j
s = {k}
r = k, l = ?
s = {}
call
stack
In which order does a inorder traversal visit
the vertices in this ordered rooted tree?
procedure inorder(T: ordered rooted tree)
r := root of T
if r is a leaf then list r
else
begin
l:= first child of r from left to right
T(l) := subtree with l as its root
inorder(T(l))
list r
for each child c of r except for l left to right
T(c) := subtree with c as its root
preorder(T(c))
end
output: j e
r = a, l = b
s = {}
r = b, l = e
s = {}
r = e, l = j
s = {k}
r = k, l = n
s = {}
call
stack
In which order does a inorder traversal visit
the vertices in this ordered rooted tree?
procedure inorder(T: ordered rooted tree)
r := root of T
if r is a leaf then list r
else
begin
l:= first child of r from left to right
T(l) := subtree with l as its root
inorder(T(l))
list r
for each child c of r except for l left to right
T(c) := subtree with c as its root
preorder(T(c))
end
output: j e n
r = a, l = b
s = {}
r = b, l = e
s = {}
r = e, l = j
s = {k}
r = k, l = n
s = {}
call
stack
r = n, l = ?
s = {}
In which order does a inorder traversal visit
the vertices in this ordered rooted tree?
procedure inorder(T: ordered rooted tree)
r := root of T
if r is a leaf then list r
else
begin
l:= first child of r from left to right
T(l) := subtree with l as its root
inorder(T(l))
list r
for each child c of r except for l left to right
T(c) := subtree with c as its root
preorder(T(c))
end
output: j e n k
r = a, l = b
s = {}
r = b, l = e
s = {}
r = e, l = j
s = {k}
r = k, l = n
s = {}
call
stack
In which order does a inorder traversal visit
the vertices in this ordered rooted tree?
procedure inorder(T: ordered rooted tree)
r := root of T
if r is a leaf then list r
else
begin
l:= first child of r from left to right
T(l) := subtree with l as its root
inorder(T(l))
list r
for each child c of r except for l left to right
T(c) := subtree with c as its root
preorder(T(c))
end
output: j e n k
r = a, l = b
s = {}
r = b, l = e
s = {}
r = e, l = j
s = {k}
r = k, l = n
s = {o,p}
call
stack
In which order does a inorder traversal visit
the vertices in this ordered rooted tree?
procedure inorder(T: ordered rooted tree)
r := root of T
if r is a leaf then list r
else
begin
l:= first child of r from left to right
T(l) := subtree with l as its root
inorder(T(l))
list r
for each child c of r except for l left to right
T(c) := subtree with c as its root
preorder(T(c))
end
output: j e n k o
r = a, l = b
s = {}
r = b, l = e
s = {}
r = e, l = j
s = {k}
r = k, l = n
s = {o,p}
call
stack
r = o, l = ?
s = {}
In which order does a inorder traversal visit
the vertices in this ordered rooted tree?
procedure inorder(T: ordered rooted tree)
r := root of T
if r is a leaf then list r
else
begin
l:= first child of r from left to right
T(l) := subtree with l as its root
inorder(T(l))
list r
for each child c of r except for l left to right
T(c) := subtree with c as its root
preorder(T(c))
end
output: j e n k o
r = a, l = b
s = {}
r = b, l = e
s = {}
r = e, l = j
s = {k}
r = k, l = n
s = {o,p}
call
stack
In which order does a inorder traversal visit
the vertices in this ordered rooted tree?
procedure inorder(T: ordered rooted tree)
r := root of T
if r is a leaf then list r
else
begin
l:= first child of r from left to right
T(l) := subtree with l as its root
inorder(T(l))
list r
for each child c of r except for l left to right
T(c) := subtree with c as its root
preorder(T(c))
end
output: j e n k o p
r = a, l = b
s = {}
r = b, l = e
s = {}
r = e, l = j
s = {k}
r = k, l = n
s = {o,p}
call
stack
r = k, l = ?
s = {}
In which order does a inorder traversal visit
the vertices in this ordered rooted tree?
procedure inorder(T: ordered rooted tree)
r := root of T
if r is a leaf then list r
else
begin
l:= first child of r from left to right
T(l) := subtree with l as its root
inorder(T(l))
list r
for each child c of r except for l left to right
T(c) := subtree with c as its root
preorder(T(c))
end
output: j e n k o p
r = a, l = b
s = {}
r = b, l = e
s = {}
r = e, l = j
s = {k}
r = k, l = n
s = {o,p}
call
stack
In which order does a inorder traversal visit
the vertices in this ordered rooted tree?
procedure inorder(T: ordered rooted tree)
r := root of T
if r is a leaf then list r
else
begin
l:= first child of r from left to right
T(l) := subtree with l as its root
inorder(T(l))
list r
for each child c of r except for l left to right
T(c) := subtree with c as its root
preorder(T(c))
end
output: j e n k o p
r = a, l = b
s = {}
r = b, l = e
s = {}
r = e, l = j
s = {k}
call
stack
In which order does a inorder traversal visit
the vertices in this ordered rooted tree?
procedure inorder(T: ordered rooted tree)
r := root of T
if r is a leaf then list r
else
begin
l:= first child of r from left to right
T(l) := subtree with l as its root
inorder(T(l))
list r
for each child c of r except for l left to right
T(c) := subtree with c as its root
preorder(T(c))
end
output: j e n k o p b
r = a, l = b
s = {}
r = b, l = e
s = {}
call
stack
In which order does a inorder traversal visit
the vertices in this ordered rooted tree?
procedure inorder(T: ordered rooted tree)
r := root of T
if r is a leaf then list r
else
begin
l:= first child of r from left to right
T(l) := subtree with l as its root
inorder(T(l))
list r
for each child c of r except for l left to right
T(c) := subtree with c as its root
preorder(T(c))
end
output: j e n k o p b
r = a, l = b
s = {}
r = b, l = e
s = {f}
call
stack
In which order does a inorder traversal visit
the vertices in this ordered rooted tree?
procedure inorder(T: ordered rooted tree)
r := root of T
if r is a leaf then list r
else
begin
l:= first child of r from left to right
T(l) := subtree with l as its root
inorder(T(l))
list r
for each child c of r except for l left to right
T(c) := subtree with c as its root
preorder(T(c))
end
output: j e n k o p b f
r = a, l = b
s = {}
r = b, l = e
s = {f}
r = f, l = e
s = {}
call
stack
In which order does a inorder traversal visit
the vertices in this ordered rooted tree?
procedure inorder(T: ordered rooted tree)
r := root of T
if r is a leaf then list r
else
begin
l:= first child of r from left to right
T(l) := subtree with l as its root
inorder(T(l))
list r
for each child c of r except for l left to right
T(c) := subtree with c as its root
preorder(T(c))
end
output: j e n k o p b f
r = a, l = b
s = {}
r = b, l = e
s = {f}
call
stack
In which order does a inorder traversal visit
the vertices in this ordered rooted tree?
procedure inorder(T: ordered rooted tree)
r := root of T
if r is a leaf then list r
else
begin
l:= first child of r from left to right
T(l) := subtree with l as its root
inorder(T(l))
list r
for each child c of r except for l left to right
T(c) := subtree with c as its root
preorder(T(c))
end
output: j e n k o p b f
r = a, l = b
s = {}
call
stack
In which order does a inorder traversal visit
the vertices in this ordered rooted tree?
procedure inorder(T: ordered rooted tree)
r := root of T
if r is a leaf then list r
else
begin
l:= first child of r from left to right
T(l) := subtree with l as its root
inorder(T(l))
list r
for each child c of r except for l left to right
T(c) := subtree with c as its root
preorder(T(c))
end
output: j e n k o p b f
r = a, l = b
s = {c,d}
call
stack
In which order does a inorder traversal visit
the vertices in this ordered rooted tree?
procedure inorder(T: ordered rooted tree)
r := root of T
if r is a leaf then list r
else
begin
l:= first child of r from left to right
T(l) := subtree with l as its root
inorder(T(l))
list r
for each child c of r except for l left to right
T(c) := subtree with c as its root
preorder(T(c))
end
output: j e n k o p b f a c l g m d h i
In which order does a postorder traversal visit
the vertices in this ordered rooted tree?
Infix, Prefix, and Postfix Notation
represent complicated expressions using an ordered
rooted tree (typically binary)
Algebraic expressions
preorder Polish notation
inorder infix notation
postorder reverse Polish notation
Express in:
a. Polish
b. infix
c. reverse Polish
Evaluating
a prefix
expression
Evaluate postfix expression 7 2 3 * - 4 ^ 9 e / +
How do you do trees in Java?

You might also like