### Ch10

```Chapter 10
Section 10.1
Introduction to Trees
These class notes are based on material from our
textbook, Discrete Mathematics and Its
Applications, 6th ed., by Kenneth H. Rosen,
are intended for classroom use only and are not a
Tree
• A tree is a connected undirected graph with
– No simple circuits
– No multiple edges
– No loops
• An undirected graph is a tree if and only if
there is a unique simple path between any
two of its vertices.
Which graphs are trees?
b
a
b
a
b
a
c
d
c
d
c
e
f
e
YES
f
YES
b
a
c
d
e
f
NO
d
f
e
NO
Forest
• What if there are no simple circuits but the
graph is not connected?
• Each of the connected components is a tree
• The collection is called a forest.
Rooted Tree
• Specify a vertex as root, then direct each
edge away from the root. The resulting tree
is called a rooted tree.
Root
Example
a
d
Root
b
e
b
c
f
a
d
e
b
f
c
f
d
e
a
c
What if a different root is chosen?
a
d
b
e
Root
c
c
b
f
c
f
b
d
e
b
c
a
f
d
e
a
a
d
e
f
A different rooted tree results.
Tree Terminology
• If v is a vertex of tree T other than the root,
the parent of v is the unique vertex u such
that there is a directed edge from u to v.
• When u is the parent of v, v is called the
child of u.
• If two vertices share the same parent, then
they are called siblings.
Example
a
Root
b
c
e
i
d
f
j
k
g
h
l
m
Example
a
Siblings
b
c
e
i
d
f
j
k
g
h
l
m
Tree Terminology (Cont.)
• The ancestors of a vertex other than the
root are the vertices in the path from the
root to this vertex, excluding the vertex
itself and including the root.
• The descendants of a vertex v are those
vertices that have v as an ancestor.
Example
a
Ancestors of k
b
c
e
i
d
f
j
k
g
h
l
m
Example
a
Descendants of d
b
c
e
i
d
f
j
k
g
h
l
m
Tree Terminology (Cont.)
• A vertex with no children is called a leaf.
• Vertices with children are called internal
vertices.
Example
a
Leaves
b
c
e
i
d
f
j
k
g
h
l
m
Example
a
Internal vertices
b
c
e
i
d
f
j
k
g
h
l
m
Tree Terminology (Cont.)
• If a is a vertex in a tree, the subtree with
a as its root is:
– the subgraph of the tree consisting of a
and its descendants, and
– all edges incident to these descendants.
Example
a
Subtree at b
Subtree at d
b
c
e
i
d
f
j
k
g
h
l
m
Tree Terminology (Cont.)
• A rooted tree is called an m-ary tree if every
internal vertex has no more than m children.
• A tree is called a full m-ary tree if every
internal vertex has exactly m children.
• An m-ary tree with m  2 is called a binary
tree.
Example
• What is the arity of this
tree?
• Is this a full m-ary tree?
------------------• This is a 2-ary, or binary,
tree.
• Yes, this is a full binary
tree, since every internal
vertex has exactly 2
children.
Example
• What is the arity of
this tree?
• Is this a full m-ary tree?
-------• This is a 3-ary tree.
• Yes, this is a full 3-ary
tree, since every
internal vertex has
exactly 3 children.
Example
• What is the arity of this tree?
• Is this a full m-ary tree?
-------
• This is a full 5-ary tree.
Example
• What is the arity of this tree?
• Is this a full m-ary tree?
Some internal nodes
have 2 children, but
some have 3, so this
is a 3-ary tree.
It is not a full-3-ary
tree, since one
internal node has
only 2 children.
Ordered Rooted Tree
• An ordered rooted tree is one where the
children of each internal vertex are ordered.
• In an ordered binary tree, if an internal
vertex has two children, then they are called
left child and right child.
• The subtree rooted at the left child of a
vertex is called the left subtree and subtree
rooted at the right child of a vertex is called
the right subtree.
Example
a
b
d
Left child of d
f
c
e
g
h
j
i
k
l
m
Example
a
b
d
f
c
e
g
Right child of d
h
j
i
k
l
m
Example
a
b
d
f
c
e
g
h
j
Left subtree of c
i
k
l
m
Example
a
b
d
f
c
e
g
h
j
i
k
l
m
Right subtree of c
Tree Terminology (Cont.)
• The level of a vertex v in a rooted tree is
the length of the unique path from the
root to this vertex.
• What is the level of the root? 0
• The height of a rooted tree is the
maximum of the levels of the vertices.
Example
a
Levels
b
c
e
i
0
d
f
j
k
Height = 3
1
g
h
l
2
m
3
Properties of Trees
• A tree with n vertices has n1 edges.
• An full m-ary tree with i internal vertices
contains n = mi + 1 vertices.
• A rooted m-ary tree of height h is called
balanced if all leaves are at levels h or h–1.
Example
Is this tree balanced?
Example
Is this tree balanced?
Example
Is this tree balanced?
Tree Properties (Cont.)
• There are at most mh leaves in an m-ary
tree of height h
• If an m-ary tree with l leaves is full and
balanced, then its height is
h = logml
Homework Exercises
• Do Section 10.1 exercises # 1, 3, 5, 7, 9,
17, 19, 20, 27, 28
CSE 2813
Discrete Structures
Chapter 10, Section 10.2
Applications of Trees
These class notes are based on material from
our textbook, Discrete Mathematics and Its
Applications, 6th ed., by Kenneth H. Rosen,
They are intended for classroom use only and
are not a substitute for reading the textbook.
Applications of Trees
•
•
•
•
Binary Search Trees
Decision Trees
Prefix Codes (Huffman Coding)
Game Trees
Full and Complete Binary Trees
A full binary tree is a binary tree in which
each node is either a leaf node or has degree
2 (i.e., has exactly 2 children).
A complete binary tree is a full binary tree
in which all leaves have the same depth.
A nearly complete binary tree is completely
filled on all levels except possibly the lowest,
which is filled from the left up to a point.
Examples
Full binary tree:
Complete binary tree:
Binary Trees
• What is the smallest height possible in a
binary tree of 7 nodes? How many leaf nodes
does it have?
height = 2
num. leaves = 4
Binary Trees
•What is the smallest height possible in a binary
tree of 15 nodes? How many leaf nodes does it
have?
height = 3
num. leaves = 8
Binary Trees
• What is the smallest height possible in a
binary tree of 31 nodes? How many leaf nodes
does it have?
height = 4
num. leaves = 16
Binary Trees
• What is the smallest height possible in a
binary tree of (2n) - 1 nodes?
• The smallest height possible in a binary
tree of (2n) - 1 nodes is n – 1.
• Example: a tree with 31 nodes has 25 –
1 nodes, so n = 5, and its height = (n – 1)
= (5 – 1) = 4.
Binary Trees
• How many leaf nodes does a binary tree
of (2n) - 1 nodes have?
• A tree with (2n) - 1 nodes has 2n-1 leaves
• Example: A tree with 31 nodes has 25 –
1 nodes, so n = 5, and this tree has 2n-1 =
25-1 = 24 = 16 leaves.
Binary Trees
Note the pattern here:
In a completely filled binary tree
with (2n) – 1 nodes, half of the nodes
(rounding up) will be leaves. That is, (2n)
/ 2 nodes will be leaf nodes. And we can
rewrite (2n) / 2 as 2n-1.
Binary Trees
Lemma:
For any h  1, a binary tree which has more
than 2h-1 leaf nodes must have a height greater than
h – 1.
Example:
If a binary tree has 17 leaf nodes, can it have
a height of 4?
No; a complete binary tree of height 4 has
only 16 leaf nodes. A binary tree with 17 leaves
must have a height greater than 4.
Binary Search Trees
Binary Search Trees
Decision Trees
Decision Trees
Prefix Codes
Huffman Codes
Consider the problem of data compression.
Suppose that we have a 100,000-character file that
contains only 6 different characters, a - f. Some
characters occur more frequently than others.
Currently, the file is stored using a fixed-length
code of 3 bits per character, where a = 000, b =
001, ..., f = 101.
This requires 300,000 bits to store the file.
This slide and the next 53 are adapted from: Cormen, Leiserson, Rivest, and Stein,
Introduction to Algorithms, 2nd edition, The MIT Press, McGraw-Hill, 2001.
Huffman Codes
Huffman coding uses a variable-length code to
compress the file.
We can use a 0 to represent the most frequentlyoccurring letter in the file, which will save us two
bits per occurrence.
Huffman codes are prefix codes, which means that
all bit patterns are unambiguous; this requires that
the bit-patterns for our other letters be 3 or 4 bits
long.
Using Huffman coding, we can store the file in
2240,00 bits.
Huffman Codes
a
b
c
d
e
f
Frequency of
occurrence (in
thousands)
Codeword (fixedlength)
45
13
12
16
9
5
Codeword
(variable length)
0
000 001 010 011 110
101
101 100 111 1101 1100
Huffman Codes
Since we are using a prefix code, we can
simply concatenate our codewords together
to produce our bitstring.
For example, the string abc can be
represented as 0101100.
This is unambiguous. Why?
Huffman Codes
Only one character can begin with 0; that is a. So
a must be the first character in our string.
This leaves 101100. The next bit is a 1; five
characters can begin with 1, so we look at the
second bit. Two characters can begin with 10, so
we look at the third bit. Only one character can
begin with 101; that is b.
This leaves 100. Again, looking at all three bits,
we see that this character must be c.
Huffman Codes
Huffman
Coding,
using a
“Greedy
Algorithm”
Game Trees
Game Trees
Game Trees
CSE 2813
Discrete Structures
Chapter 10, Section 10.3
Tree Traversal
These class notes are based on material from our
textbook, Discrete Mathematics and Its
Applications, 6th ed., by Kenneth H. Rosen,
are intended for classroom use only and are not a
To totally order the vertices of on orered rooted tree:
1. Label the root with the integer 0.
2. Label its k children (at level 1) from left to right
with 1, 2, 3, …, k.
3. For each vertex v at level n with label A, label
its kv children, from left to right, with A.1, A.2,
A.3, …, A.kv.
This labeling is called the universal address system
of the ordered rooted tree.
Traversal Algorithms
• A traversal algorithm is a procedure for
systematically visiting every vertex of an
ordered rooted tree
– An ordered rooted tree is a rooted tree where
the children of each internal vertex are ordered
• The three common traversals are:
– Preorder traversal
– Inorder traversal
– Postorder traversal
Traversal
• Let T be an ordered rooted tree with root r.
• Suppose T1, T2, …,Tn are the subtrees at r
from left to right in T.
r
T1
T2
Tn
Preorder Traversal
Step 1: Visit r
Step 2: Visit T1 in preorder
Step 3: Visit T2 in preorder
.
.
.
Step n+1: Visit Tn in preorder
r
T1
T2
Tn
Preorder Traversal
Example
Tree:
M
A
Y
J
R
E
H
P
Q
T
Visiting sequence:
M
A
J
Y
R
H
P
Q
T
E
The Preorder Traversal of T
In which order
does a preorder
traversal visit
the vertices in
the ordered
rooted tree T
shown to the left?
Preorder:
Visit root, then
visit subtrees
left to right.
The Preorder Traversal of T
McGraw-Hill
Companies,
Inc. all rights
reserved
Preorder:
Visit root, then
visit subtrees
left to right.
The Preorder Traversal of T
The Preorder Traversal of T
The Preorder Traversal of T
Inorder Traversal
Step 1: Visit T1 in inorder
Step 2: Visit r
Step 3: Visit T2 in inorder
.
.
.
Step n+1: Visit Tn in inorder
r
T1
T2
Tn
Example
Tree:
M
A
Y
J
R
E
H
P
Q
T
Visiting sequence:
J
A
M
R
Y
P
H
Q
T
E
The Inorder Traversal of T
In which order
does an inorder
traversal visit the
vertices in the
ordered rooted tree
T shown to the left?
Inorder:
Visit leftmost tree,
visit root, visit
other subtrees left
to right.
The Inorder Traversal of T
Companies, Inc. all
rights reserved
Inorder:
Visit
leftmost tree,
visit root,
visit other
subtrees left
to right.
The Inorder Traversal of T
The Inorder Traversal of T
The Inorder Traversal of T
Postorder Traversal
Step 1: Visit T1 in postorder
Step 2: Visit T2 in postorder
.
.
.
Step n: Visit Tn in postorder
Step n+1: Visit r
r
T1
T2
Tn
Example
Tree:
M
A
Y
J
R
E
H
P
Q
T
Visiting sequence:
J
A
R
P
Q
T
H
Y
E
M
The Postorder Traversal of T
In which order
does a postorder
traversal visit
the vertices in
the ordered
rooted tree T
shown to the left?
Postorder:
Visit subtrees
left to right, then
visit root.
The Postorder Traversal of T
McGraw-Hill
Companies,
Inc. all rights
reserved
Postorder:
Visit
subtrees left
to right,
then visit
root.
The Postorder Traversal of T
The Postorder Traversal of T
The Postorder Traversal of T
Representing Arithmetic Expressions
• Complicated arithmetic expressions can be
represented by an ordered rooted tree
– Internal vertices represent operators
– Leaves represent operands
• Build the tree bottom-up
– Construct smaller subtrees
– Incorporate the smaller subtrees as part of
larger subtrees
Example
(x+y)2 + (x-3)/(y+2)
+

2
+
x
/
y
–
+
x 3 y 2
Infix Notation
• Traverse in inorder adding parentheses for
each operation
+

+
x
/
2
y
–
+
x 3 y 2
( ((x + y )  2 ) +( ( x – 3 ) / ( y + 2 ) ) )
Prefix Notation (Polish Notation)
• Traverse in preorder:
+

+
x
/
2
y
–
+
x 3 y 2
+  + x y 2 / – x 3 + y 2
Evaluating Prefix Notation
• In an prefix expression, a binary operator
precedes its two operands
• The expression is evaluated right-left
• Look for the first operator from the right
• Evaluate the operator with the two operands
immediately to its right
Example
+ / + 2 2 2 / – 3 2 + 1 0
+ / + 2 2 2 / – 3 2 1
+ / + 2 2 2 / 1 1
+ / + 2 2 2 1
+ / 4 2 1
+ 2 1
3
Postfix Notation (Reverse Polish)
• Traverse in postorder
+

+
x
/
2
y
–
+
x 3 y 2
x y + 2  x 3 – y 2 + /+
Evaluating Postfix Notation
• In an postfix expression, a binary operator
follows its two operands
• The expression is evaluated left-right
• Look for the first operator from the left
• Evaluate the operator with the two
operands immediately to its left
Example
2 2 + 2 / 3 2 – 1 0 + / +
4 2 / 3 2 – 1 0 + / +
2 3 2 – 1 0 + / +
2 1 1 0 + / +
2 1 1 / +
2 1 +
3
Homework Exercises
• Do questions :
7, 9, 10, 12, 13, 15, 16, 17, 18, 23, 24
Conclusion
• In this chapter we have studied:
– Trees
– Applications of Trees
– Tree Traversal
```