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  2L1
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  2h1 then nint  2h1  1
The total number of branches
to internal nodes is :
nint Branches  nint  1  2h1  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 L1  ( 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