CS301 – Data Structures
Lecture No. 25
___________________________________________________________________
Data Structures
Lecture No. 25
Reading Material
Data Structures and Algorithm Analysis in C++
Chapter. 4, 10
4.2.2, 10.1.2
Summary
•
Expression tree
•
Huffman Encoding
Expression tree
We discussed the concept of expression trees in detail in the previous lecture. Trees
are used in many other ways in the computer science. Compilers and database are two
major examples in this regard. In case of compilers, when the languages are translated
into machine language, treelike structures are used. We have also seen an example of
expression tree comprising the mathematical expression. Let’s have more discussion
on the expression trees. We will see what are the benefits of expression trees and how
can we build an expression tree. Following is the figure of an expression tree.
In the above tree, the expression on the left side is
a + b * c
while on the right side,
we have
d * e + f * g
. If you look at the figure, it becomes evident that the inner nodes
contain operators while leaf nodes have operands. We know that there are two types
of nodes in the tree i.e. inner nodes and leaf nodes. The leaf nodes are such nodes
which have left and right subtrees as null. You will find these at the bottom level of
the tree. The leaf nodes are connected with the inner nodes. So in trees, we have some
inner nodes and some leaf nodes.
a
c
+
b
g
*
+
+
d
*
*
e
f
This preview has intentionally blurred sections. Sign up to view the full version.
View Full Document
CS301 – Data Structures
Lecture No. 25
___________________________________________________________________
In the above diagram, all the inner nodes (the nodes which have either left or right
child or both) have operators. In this case, we have
+
or
*
as operators. Whereas leaf
nodes contain operands only i.e.
a, b, c, d, e, f, g
. This tree is binary as the operators
are binary. We have discussed the evaluation of postfix and infix expressions and
have seen that the binary operators need two operands. In the infix expressions, one
operand is on the left side of the operator and the other is on the right side. Suppose, if
we have + operator, it will be written as
2 + 4
. However, in case of multiplication, we
will write as
5*6
. We may have unary operators like negation () or in Boolean
expression we have NOT. In this example, there are all the binary operators.
Therefore, this tree is a binary tree. This is not the Binary Search Tree. In BST, the
values on the left side of the nodes are smaller and the values on the right side are
greater than the node. Therefore, this is not a BST. Here we have an expression tree
with no sorting process involved.
This is not necessary that expression tree is always binary tree. Suppose we have a
unary operator like negation. In this case, we have a node which has () in it and there
is only one leaf node under it. It means just negate that operand.
Let’s talk about the traversal of the expression tree. The inorder traversal may be
executed here.
This is the end of the preview.
Sign up
to
access the rest of the document.
 Spring '10
 Dr.Naveed Malik
 Data Structures, Expression

Click to edit the document details