Professional Documents
Culture Documents
Binary Expression Trees
Binary Expression Trees
CS308
Data Structures
1
-
8
+
4
2
3
+
4
-
8
+
4
Infix:
((8-5)*((4+2)/3))
Prefix:
*-85 /+423
Postfix:
85- 42+3/*
Inorder Traversal: (A + H) / (M - Y)
Print second
tree
/
+
A
Preorder Traversal: / + A H - M Y
Print first
tree
/
+
A
Postorder Traversal: A H + M Y - /
Print last
tree
/
+
A
class ExprTree
ExprTree
~ExprTree
Build
Evaluate
.
.
.
*
private:
TreeNode*
root;
+
4
10
NULL
// Data member
// Pointer to left child
// Pointer to right child
OPERAND
. whichType
. left
. info
6000
. operand
. right
11
whichType;
// ANONYMOUS union
operation ;
operand ;
};
OPERATOR
. whichType
+
. operation
OPERAND
. whichType
. operand
12
switch ( ptr->info.whichType )
{
case OPERAND : return ptr->info.operand ;
case OPERATOR :
switch ( tree->info.operation )
{
case + : return ( Eval ( ptr->left ) + Eval ( ptr->right ) ) ;
case - : return ( Eval ( ptr->left ) - Eval ( ptr->right ) ) ;
case * : return ( Eval ( ptr->left ) * Eval ( ptr->right ) ) ;
case / : return ( Eval ( ptr->left ) / Eval ( ptr->right ) ) ;
}
}
}
13
14