09 Tree
09 Tree
2
Tree
A tree is defined as a finite set of one or more nodes such
that
a. There is a specially designated node called the root
and
b. The rest of the nodes could be partitioned into n
disjoint sets (n>0) each set representing a tree Ti, i=1,2,
. . . n known as subtree of the tree.
3
Tree
4
Tree
• Definition of Tree emphasizes on the aspect of
[a] Connectedness, and
[b] Absence of closed loops
5
Basic terminologies
12 nodes in the tree
Parent of H is B
Root is A
F,G,H are children of B
6
Basic terminologies
Leaf nodes: F,G,H,C,I,J,L
K is at Level 2
A has 4 subtrees
1. List Representation
10
2. Linked List Representation
B C D E
F G H I J K
L
(b) Linked list representation of the tree 11
3. An alternative elegant linked list representation
12
3. An alternative elegant linked representation
T 1 A 0 1 C 0 0
1 B 1 F 1 G 1 H
1 D 1 I
1 E 1 J O
1 K 1 L
data T
left child right sibling
A
B C D E
F I J K
G H
L
14
Binary Trees
A binary tree T is defined as a finite set of
elements called nodes such that
15
Binary Trees
16
A Level 0
B C Level 1
D E F G Level 2
17
Important observations regarding binary trees:
1 A
2 B
3
C
D E 6 F G
4 5 7
19
A binary tree with n nodes is complete if all its levels
are having maximum no of nodes except possibly in the
last level where the nodes are filled from left to right.
Height of a complete
1 A binary tree with n given by
2 B C 3 h log 2 (n 1)
D E
4 5 6 F
20
A complete binary tree with n nodes obeys the
following properties with regard to its node numbering:
[a] If a parent node has a number i then its left child has
the number 2i (2i < n).
-- If 2i > n then i has no left child.
a m
b n
c o
23
Representation of Binary Tree
24
Representation Of Binary Trees
Array Representation
1
a
Sequential representation of a
2
tree with height h will require an
b array with approx 2h-1 elements
4 5
c d
10
e f
11
1 2 3 4 5 6 7 8 9 10 11
a b c d e f
25
Array Representation
A [1] A
[2] B
[3] --
B
[4] C
[5] --
C [6] --
[7] --
D [8] D
[9] --
. .
E
[16] E
Memory wastage !!
26
Linked representation
T
LCHILD DATA RCHILD
b
c d
e f
27
• Observation regarding the linked representation
of Binary Tree
29
Traversing Binary Tree
In-order
30
Traversing Binary Tree
Post-order
31
Illustrations for Traversals
• Assume: visiting a node 1
is printing its label 3 7
• Preorder:
5 8 9
1 3 5 4 6 7 8 9 10 11 12
4 6 10
• Inorder:
4 5 6 3 1 8 7 9 11 10 12 11 12
• Postorder:
4 6 5 3 8 11 12 10 9 7 1
32
Illustrations for Traversals (Contd.)
33
Euler’s Tree traversals using “flags”
• The order in which the nodes are visited during a tree
traversal can be easily determined by imagining there is a
“flag” attached to each node, as follows:
B C B C B C
D E F G D E F G D E F G
Inorder: D B H E A I F J F CG
Preorder: A B D E H C F I J G
Now root is A
Left subtree: D B H E
Right subtree: I F J C G
36
continues.
A
In: D B H E IFJCG
Pre: B D E H CFIJG
D HE IFJ G
EH FIJ
H I J
37
Example: For Given Inorder and
Postorder
38
n6
In:n1,n2,n3,n4,n5 n7,n8,n9
Post:n1,n3,n5,n4,n2 n8,n7,n9
n1 n3,n4,n5 n7,n8
n3,n5,n4 n8,n7
n3 n5 n8
39
Given Preorder & Postorder
• Tree may not be unique
preorder: A B C
postorder: C B A
A A
B B
C C
Tree-1 Tree-2
40
Given Preorder & Postorder
1. First node in preorder is ROOT (same as last node
in postorder)
2. Find previous node of ROOT in postorder (say X)
and locate it in preorder
3. Nodes before X in preorder is the left subtree of
ROOT
4. X and nodes after X in preorder is the right subtree
of ROOT
5. Repeat stepts 1 to 5 until each subtree contains one
element
41
Given Preorder & Postorder
Pre: A B C D F G E
Post: C F G D B E A
Pre: B C D F G Pre: E
Post: C F G D B Post: E
Pre: C Pre: D F G
Post: C Post: F G D
Pre: F Pre: G
Post: F Post: G
42
Traversal Algorithm Using Stack
44
In-order Traversal with a stack
[1] [Push NULL onto STACK and initialize PTR]
Set TOP =1, STACK[1] = NULL, PTR = ROOT
[2] Repeat while PTR NULL [Push the Left-most path onto STACK]
(a) Set TOP = TOP + 1, STACK[TOP] = PTR
(b) Set PTR = PTR LEFT
[3] Set PTR = STACK[TOP], TOP = TOP -1 [Pops node from STACK]
[4] Repeat Steps 5 to 7 while PTR NULL: [Backtracking]
[5] Apply PROCESS to PTRINFO
[6] [Right Child ?] If PTRRIGHT NULL then
(a) Set PTR = PTRRIGHT
(b) Go to Step 2
[7] Set PTR = STACK[TOP], TOP = TOP -1
[8] Exit
45
In-order Traversal with a stack
[1] Push the Left-most path from ROOT onto STACK
[2] While STACK is not empty
(a) Pop and process node X
(b) If Right Child of X (say Y) exists then
Push left most path from Y onto STACK
46
In-order Traversal with a stack
[1] Push the Left-most path from ROOT onto STACK
[2] While STACK is not empty
(a) Pop and process node X
(b) If Right Child of X (say Y) exists then
Push left most path from Y onto STACK
Step Output Stack
1 A,B,D,G,K
A 2 K A,B,D,G
3 G A,B,D
B C
4 D A,B,H,L
5 L A,B,H
D E
6 H A,B,M
7 M A,B
G H 8 B A
9 A C,E
K L M 10 E C
11 C --
47
Self Study