7/23/2019 Lec 9 Trees
http://slidepdf.com/reader/full/lec-9-trees 1/35
1
Trees
Lecture # 9
7/23/2019 Lec 9 Trees
http://slidepdf.com/reader/full/lec-9-trees 2/35
2
Tree
A tree is a collection of n nodes, one of which is the root,and n -1 edges.
n -1 edges, because each edge connects some node to itsparent, and every node except the root has one parent
ach node may have an arbitrary number of children,possibly !ero. "odes with no children are nown as leaves."odes with the same parent are siblings
A Path from node n1 to n is defined as a se$uence of
nodes n1, n%, &,n such that ni is the parent of ni ' 1 for 1 ≤ i ( .
)he length of this path is the number of edges on the path,namely * 1
7/23/2019 Lec 9 Trees
http://slidepdf.com/reader/full/lec-9-trees 3/35
3
Tree
)here is a path of length !ero from every
node to itself.
+n a tree there is exactly one path fromthe root to each node.
)he level of any node is the length of its
path from the root.
)he degree of a node is its number of
subtrees.
7/23/2019 Lec 9 Trees
http://slidepdf.com/reader/full/lec-9-trees 4/35
4
Binary Trees
A binary tree is either empty, or it consists of a node calledthe root together with two binary trees called the left sub-tree and right sub-tree of the root
A binary tree consists of a root and one or two children named as left child and right child.
A binary tree is a set of elements that is either empty or ispartitioned into three disjoint subsets.
)he first subset contains a single element called the root ofthe tree. )he other two subsets are themselves binary trees,called the left and right sub-trees of the original tree.
A left or right sub-tree can be empty. ach element of the binary tree is called the node of the
tree.
7/23/2019 Lec 9 Trees
http://slidepdf.com/reader/full/lec-9-trees 5/35
5
Binary Trees
Some Binary Trees
One node Two nodes
Three nodes
7/23/2019 Lec 9 Trees
http://slidepdf.com/reader/full/lec-9-trees 6/35
6
Binary Trees
trictly inary )ree +f every non-leaf node in a binary tree has non-empty
left and right sub-trees A strict binary tree with n
leaves always contain 2n-1 nodes. omplete inary )ree
A strictly binary tree all of whose leaves are at level d
+f a binary tree contains m nodes at levell
it containsat most %m nodes at level l '1.
A complete binary tree contains 2l nodes at level l .
7/23/2019 Lec 9 Trees
http://slidepdf.com/reader/full/lec-9-trees 7/35
7
Dynamic Implementation of
Binary Tree Linked Implementation
7/23/2019 Lec 9 Trees
http://slidepdf.com/reader/full/lec-9-trees 8/35
8
Binary Trees Implementation
class BTNode
{
public
in! in"o#
BTNode $le"!% $ri&h!#
BTNode'( { le"! ) ri&h! ) *# +
BTNode'in! el% BTNode $le" ) *% BTNode $re! ) *( {
in"o ) el#
le"! ) le"#ri&h! ) re!#
+
+#
7/23/2019 Lec 9 Trees
http://slidepdf.com/reader/full/lec-9-trees 9/35
,
Binary Trees Implementation
class BT
{
public
BT' ( { roo! ) *# +
-BT' ( { clear' (# roo! ) *# +.oid clear' ( { clear'roo!(# roo! ) *# + //0ele!e all nodes o" a !ree
bool is1mp!y' ( { re!urn roo! )) * +//checs !ree is emp!y or no!
.oid preorder' ( { preorder'roo!(# +//preorder !ra.ersal o" !ree
.oid inorder' ( { inorder'roo!(# +//inorder !ra.ersal o" !ree
.oid pos!order' ( { pos!order'roo!(# +//pos!order !ra.eral o" !ree
.oid bread!hirs!'(#//bread!h "irs! !ra.ersal
on!inue on ne! slide
7/23/2019 Lec 9 Trees
http://slidepdf.com/reader/full/lec-9-trees 10/35
*
Binary Trees Implementation
pri.a!e
BTNode $roo!#
.oid clear'BTNode $(#
.oid preorder'BTNode $(#
.oid inorder'BTNode $(#
.oid pos!order'BTNode $(#
+#
7/23/2019 Lec 9 Trees
http://slidepdf.com/reader/full/lec-9-trees 11/35
Binary Trees Traversals
)ree )raversal is the process of visiting each
node in the tree exactly one time.
)ree traversals are of two types /epth 0irst )raversal
readth 0irst )raversal
)he three /epth 0irst )raversal techni$ues are
reorder tree traversal +norder tree traversal
ostorder tree traversal
7/23/2019 Lec 9 Trees
http://slidepdf.com/reader/full/lec-9-trees 12/35
2
Binary Trees Traversals
reorder )ree )raversal
1. 2isit the root
%. )raverse the left sub-tree in preorder 3. )raverse the right sub-tree in preorder
Example:
AB
C
ED9B01
7/23/2019 Lec 9 Trees
http://slidepdf.com/reader/full/lec-9-trees 13/35
3
Binary Trees Traversals
.oid BTpreorder'BTNode $p(
{
i"'p :) *(
{
cou!;;p<=in"o#
preorder'p<=le"!(#
preorder'p<=ri&h!(#
+
+
7/23/2019 Lec 9 Trees
http://slidepdf.com/reader/full/lec-9-trees 14/35
4
Binary Trees Traversals
+norder )ree )raversal4
1. )raverse the left sub-tree in inorder
%. 2isit the root3. )raverse the right sub-tree in inorder
Example:
A
BC
ED901B
7/23/2019 Lec 9 Trees
http://slidepdf.com/reader/full/lec-9-trees 15/35
5
Binary Trees Traversals
.oid BTinorder'BTNode $p(
{
i"'p :) *(
{
inorder'p<=le"!(#
cou!;;p<=in"o#
inorder'p<=ri&h!(#
+
+
7/23/2019 Lec 9 Trees
http://slidepdf.com/reader/full/lec-9-trees 16/35
6
Binary Trees Traversals
ostorder )ree )raversal4
1. )raverse the left sub-tree in postorder
%. )raverse the right sub-tree in postorder 3. 2isit the root
Example:
A
BC
ED01B9
7/23/2019 Lec 9 Trees
http://slidepdf.com/reader/full/lec-9-trees 17/35
7
Binary Trees Traversals
.oid BTpos!order'BTNode $p(
{
i"'p :) *(
{
pos!order'p<=le"!(#
pos!order'p<=ri&h!(#
cou!;;p<=in"o#
+
+
7/23/2019 Lec 9 Trees
http://slidepdf.com/reader/full/lec-9-trees 18/35
8
Binary Trees Traversals
Traverse the following tree.
+
- /
* ^ E F
A B C D
>norder 9 $ B ? @ 0 A 1 /
reorder A * $ 9 B @ 0 / 1
os!order 9 B $ 0 @ < 1 / A
7/23/2019 Lec 9 Trees
http://slidepdf.com/reader/full/lec-9-trees 19/35
,
Binary Trees Traversals
11!
"# 1$
%&1'
1(
1
"(
!
!
)re*order Traversal+
)ost*order Traversal+
In*order Traversal+
Traverse the following tree.
7/23/2019 Lec 9 Trees
http://slidepdf.com/reader/full/lec-9-trees 20/35
2*
Binary Trees Traversals
Breadth First Tree Traversal +mplementation of this ind of traversal is
straightforward when a ueue is used.
onsider a top down left-to-right, breadth
first traversal.
After a node is visited, its children, if any
are placed at the end 5rear6 of a $ueue, andthe node at the beginning 5front6 of the
$ueue is visited.
7/23/2019 Lec 9 Trees
http://slidepdf.com/reader/full/lec-9-trees 21/35
Breadth First TraversalExample
A
C
D
B
E
,-
I
7/23/2019 Lec 9 Trees
http://slidepdf.com/reader/full/lec-9-trees 22/35
Breadth First TraversalExample
C
/0e0e
B
A
C
D
B
E
,-
I
9
7/23/2019 Lec 9 Trees
http://slidepdf.com/reader/full/lec-9-trees 23/35
D0e0e C
B
A
C
D
B
E
,-
I
9
Breadth First TraversalExample
7/23/2019 Lec 9 Trees
http://slidepdf.com/reader/full/lec-9-trees 24/35
Breadth First TraversalExample
B
En0e0 D
D
A
C
D
B
E
,-
I
9
7/23/2019 Lec 9 Trees
http://slidepdf.com/reader/full/lec-9-trees 25/35
Breadth First TraversalExample
D0e0e B
D
A
C
D
B
E
,-
I
9B
7/23/2019 Lec 9 Trees
http://slidepdf.com/reader/full/lec-9-trees 26/35
Breadth First TraversalExample
D
En0e0e E2
E
A
C
D
B
E
,-
I
9B
7/23/2019 Lec 9 Trees
http://slidepdf.com/reader/full/lec-9-trees 27/35
Breadth First TraversalExample
D0e0e D
E
A
C
D
B
E
,-
I
9B0
7/23/2019 Lec 9 Trees
http://slidepdf.com/reader/full/lec-9-trees 28/35
Breadth First TraversalExample
D0e0e E
A
C
D
B
E
,-
I
9B01
7/23/2019 Lec 9 Trees
http://slidepdf.com/reader/full/lec-9-trees 29/35
Breadth First TraversalExample
En0e0e ,2 -
, -
A
C
D
B
E
,-
I
9B01
7/23/2019 Lec 9 Trees
http://slidepdf.com/reader/full/lec-9-trees 30/35
Breadth First TraversalExample
D0e0e
, -
A
C
D
B
E
,-
I
9B01C
7/23/2019 Lec 9 Trees
http://slidepdf.com/reader/full/lec-9-trees 31/35
Breadth First TraversalExample
I
En0e0e I
, -
A
C
D
B
E
,-
I
9B01C
7/23/2019 Lec 9 Trees
http://slidepdf.com/reader/full/lec-9-trees 32/35
Breadth First TraversalExample
A
C
D
B
E
,-
I
I
D0e0e ,
-
9B01C
7/23/2019 Lec 9 Trees
http://slidepdf.com/reader/full/lec-9-trees 33/35
Breadth First TraversalExample
A
C
D
B
E
,-
I
I
D0e0e -
9B01CD
7/23/2019 Lec 9 Trees
http://slidepdf.com/reader/full/lec-9-trees 34/35
Breadth First TraversalExample
A
C
D
B
E
,-
I
D0e0e I
9B01CD>
7/23/2019 Lec 9 Trees
http://slidepdf.com/reader/full/lec-9-trees 35/35
35
Binary Trees Traversals .oid BTbread!hirs!'(
{ Eueue Fueue#
BTNode $p ) roo!#
i"'p :) *(
{ FueueenFueue'p(#
while':Fueueemp!y'((
{ p ) FueuedeFueue'(#cou!;;p<=ey#
i"'p <= le"! :) *( FueueenFueue'p<=le"!(#
i"'p <= ri&h! :) *( FueueenFueue'p<=ri&h!(#
+
++