CSCI 210 Data Structures & Algorithms
Download
Report
Transcript CSCI 210 Data Structures & Algorithms
CSCE 210
Data Structures and Algorithms
Prof. Amr Goneid
AUC
Part 4. Trees
Prof. Amr Goneid, AUC
1
Trees
Binary Trees
Tree Traversal
Prof. Amr Goneid, AUC
2
1. Binary Trees
A Tree is a non-linear, hierarchical one-to-
many data structure.
A special tree is the
Binary Tree
a
b
d
c
e
f
Prof. Amr Goneid, AUC
g
3
Binary Trees
Can be implemented using arrays, structs
and pointers
Used in problems dealing with:
Searching
Hierarchy
Ancestor/descendant relationship
Classification
Prof. Amr Goneid, AUC
4
Tree Terminology
A tree consists of a finite set of nodes (or vertices)
and a finite set of edges that connect pairs of nodes.
A node is a container for data
An edge represents a relationship between two
nodes.
a node
a
a
an edge
b
Prof. Amr Goneid, AUC
5
Tree Terminology
A non-empty tree has a root node (e.g.node a). Every other
node can be reached from the root via a unique path
(e.g. a-d-f). a is the parent of nodes b and c because there is
an edge going from a down to each. Moreover, b and c are
root
children of a.
a
child of a
b
c
d
e
f
parent of g
Prof. Amr Goneid, AUC
g
6
Tree Terminology
a
b
c
d
Siblings
e
The descendants of a are (b, c, d, and e), nodes that can be
reached by paths from a.
The ancestors of e are (c and a), nodes found on the path from e
to a.
Nodes (b, d, and e) are leaf nodes (they have no children).
Each of the nodes a and c has at least one child and is an
internal node.
Prof. Amr Goneid, AUC
7
Tree Terminology
a
b
d
c
e
f
g
Each node in the tree (except leaves) may have one or
more subtrees
For a tree with n nodes there are n-1 edges
Prof. Amr Goneid, AUC
8
The Binary Tree
Level 1
a
A binary tree of height h = 3
Left
Level 2
Level 3
Right
b
d
c
e
f
A binary tree is a tree in which a parent has at most two
children. It consists of a root and two disjoint subtrees (left and
right).
The root is at level (L = 1) and the height h = maximum level
The maximum number of nodes in level L is nL 2L1
Prof. Amr Goneid, AUC
9
The Full Binary Tree
a
b
d
c
e
f
g
A binary tree is full iff the number of
nodes in level L is 2L-1
Prof. Amr Goneid, AUC
10
The Full Binary Tree
A full binary tree of height h has n
nodes, where
n 1 2 4 ... 2
h
n 2
L 1
h 1
2 1
h
L 1
Hence h log2 ( n 1 )
Prof. Amr Goneid, AUC
11
The Full Binary Tree
A full binary tree with nint internal
nodes has external nodes :
next nint 1
Since next nh 2h1 then nint 2h1 1
The total number of branches
to internal nodes is :
nint Branches nint 1 2h1 2
Prof. Amr Goneid, AUC
12
The Full Binary Tree
The cost of search for nodes in level L is L 2L-1
Hence, the total search cost is
h
c L 2 L1 ( h 1 )2 h 1
L 1
hence, the average search cost is
( h 1 )2 h 1
T( n ) c / n
h
2 1
n
For large n, T ( n ) h 1 O (log2 n )
Prof. Amr Goneid, AUC
13
The Balanced Tree
hL
hR
A balanced binary tree has the property that the heights
of the left and right subtrees differ at most by one level.
i.e. |hL – hR| ≤ 1
A Full tree is also a balanced tree
Prof. Amr Goneid, AUC
14
Complete Binary Tree
A binary tree is Complete iff the number of Nodes at level 1 <=
L <= h-1 is 2L-1 and leaf nodes at level h occupy the leftmost
positions in the tree
i.e. all levels are filled except the rightmost of the last level.
Missing Leaves
Missing Leaves
Prof. Amr Goneid, AUC
15
Complete Binary Tree
1
A B C D E
A
2
3
B
C
4
D
E
5
A complete binary tree can be efficiently
implemented as an array, where a node at index i
has children at indexes 2i and 2i+1 and a parent
at index i/2 (with one-based indexing).
Prof. Amr Goneid, AUC
16
Binary Tree as a Recursive Structure
A binary tree is a recursive structure
e.g. it can be defined recursively as:
a
if (not empty tree)
1. It has a root
b
2. It has a (Left Subtree)
3. It has a (Right Subtree)
d
e
Recursive structure suggests recursive
processing of trees (e.g. Traversal)
Prof. Amr Goneid, AUC
c
f
17
Binary Tree as a Recursive Structure
Empty
a,b,c,d,e,f
a
d
b,d,e
c,f
b
c
f
e
Prof. Amr Goneid, AUC
18
2. Tree Traversal
Traversal is to visit every node ( to display,
process, …) exactly once
It can be done recursively
There are 3 different binary tree traversal
orders:
Pre-Order:
Root is visited before its two
subtrees
In-Order:
Root is visited in between its
two subtrees
Post-Order: Root is visited after its two
subtrees
Prof. Amr Goneid, AUC
19
Pre-Order Traversal
Algorithm: complexity is O(n)
PreOrder ( tree )
{
if ( not empty tree)
2
{
b
Visit (root);
PreOrder (left subtree); 3 d
PreOrder (right subtree);
}
}
The resulting visit order = {a} {b , d , e} {c , f }
Prof. Amr Goneid, AUC
1 a
5
c
4
e
f 6
20
Pre-Order Traversal
Pre-Order Traversal is also called Depth-First traversal
1
2
3
5
4
6
Prof. Amr Goneid, AUC
7
21
In-Order Traversal
Algorithm: complexity is O(n)
InOrder ( tree )
{
if ( not empty tree)
2
{
b
InOrder (left subtree);
1 d
Visit (root);
InOrder (right subtree);
}
}
The resulting visit order = {d , b , e} {a} {f , c }
Prof. Amr Goneid, AUC
4 a
6
c
3
e
f 5
22
Post-Order Traversal
Algorithm: complexity is O(n)
PostOrder ( tree )
{
if ( not empty tree)
3
{
b
PostOrder (left subtree);
PostOrder (right subtree);1 d
Visit (root);
}
}
The resulting visit order = {d , e , b} {f , c } {a}
Prof. Amr Goneid, AUC
6 a
5
c
2
e
f 4
23
Example: Expression Tree
The expression A – B * C + D can be represented as a
tree.
In-Order traversal gives: A – B * C + D
This is the infix representation
Pre-Order traversal gives: + - A * B C D
This is the prefix representation
Post-Order traversal gives:
ABC*-D+
This is the postfix (RPN) representation
Prof. Amr Goneid, AUC
+
-
D
A
*
B
C
24
Binary Tree Traversal Demo
http://www.cosc.canterbury.ac.nz/people/
mukundan/dsal/BTree.html
Prof. Amr Goneid, AUC
25