1.4 expression tree

Post on 08-Aug-2015

43 Views

Category:

Education

3 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Expression Trees

Algorithm for evaluating postfix expressions

Start scanning the postfix expressions from left to right If operand is encountered then push it on to the stack If an operator is encountered, pop last two operands from the

stack, apply the operator on the operands and then push the resultant value on to the stack

Finally the stack must contain the single value which is the result

Contd…

Converting infix to postfix and then evaluating the postfix expression is not useful

It could be useful if we evaluate the postfix expression while it is being constructed

Using two stacks Operand stack and Operator stack will be useful

Infix to postfix- operand stack

Postfix evaluation- operator stack

Algorithm for evaluating the infix expression

Start scanning the infix expression from left to right If an operand is encountered, push it on to the operand stack If an operator is encountered, do the following

Pop until operator stack top has higher or equal precedence than current operator, before pushing the current operator on to the stack

While popping an operator, pop last two operands from the operand stack, apply the operator on the operands and then push the result on to the operand stack

Finally the operand stack has the single value which is the result.

Algorithm for constructing a binary expression tree

Start scanning the infix expression from left to right If an operand is encountered, create a binary node and push its

pointer onto the operand stack If an operator is encountered, create a binary node and do the

following Pop until operator stack top has higher or equal precedence than

current operator, before pushing the pointer on to the operand stack While popping an operator pointer, pop last two pointers from the

operand stack, and make the pointers left and right child and then operator pointer on to the operand stack

Finally top of the operand stack has the root of the expression tree.

Note:

The only differences between last two algorithms are the following.

instead of just pushing the operator / operand, we create a binarynode and we push the pointers

instead of applying the operator on two operands, we make the left and right child

instead of pushing the resultant value into the stack, we push the operator node pointer into the operand stack.

A Binary Expression Tree is . . .

A special kind of binary tree in which:

1. Each leaf node contains a single operand

2. Each nonleaf node contains a single binary operator

3. The left and right subtrees of an operator node represent subexpressions that must be evaluated before applying the operator at the root of the subtree.

7

A Four-Level Binary Expression

8

‘*’

‘-’

‘8’ ‘5’

‘/’

‘+’

‘4’

‘3’

‘2’

Levels Indicate Precedence

The levels of the nodes in the tree indicate their relative precedence of evaluation (we do not need parentheses to indicate precedence).

Operations at higher levels of the tree are evaluated later than those below them.

The operation at the root is always the last operation performed.

9

A Binary Expression Tree

10

What value does it have?

( 4 + 2 ) * 3 = 18

‘*’

‘+’

‘4’

‘3’

‘2’

Easy to generate the infix, prefix, postfix expressions (how?)

11

Infix: ( ( 8 - 5 ) * ( ( 4 + 2 ) / 3 ) )

Prefix: * - 8 5 / + 4 2 3

Postfix: 8 5 - 4 2 + 3 / *

‘*’

‘-’

‘8’ ‘5’

‘/’

‘+’

‘4’

‘3’

‘2’

Do by yourself Evaluate Following Postfix Expression:

(1) 3 * 2 + 4 * (A + B)

(2) A * (B + C) * D

(3) A * (B+C–D/E)/F

(4) A * B + (C – D/E)

(5) (a + b – c) * (e / f) – ( g – h/i)

(6) 1*1*8-5*(6-4*3-5*(7-(2*5)))

(7) (300+23)*(43-21)/(84+7)

(8) (4+8)*(6-5)/((3-2)*(2+2))

(9) 6-6/7-4*5/7-1/4*4

(10) 5*4-2+3-7+2/2*1/8/4

                                                                                             

How many squares can you create in this figure by connecting any 4 dots (the corners of a square must lie upon a grid dot?

TRIANGLES: 

How many triangles are located in the image below?

There are 11 squares total; 5 small, 4 medium, and 2 large.

27 triangles.  There are 16 one-cell triangles, 7 four-cell triangles, 3 nine-

cell triangles, and 1 sixteen-cell triangle.

GUIDED READING

MIND MAP

ASSESSMENT

1. The postfix expression for the infix expression A + B*(C+D)/F + D*E isA. AB+CD+*F/D+E*

B. ABCD+*F/DE*++

C. A*B+CD/F*DE++

D. A+*BCD/F*DE++

Contd..2. The leaf nodes of binary expression tree contains

A. both operators and operands

B. only operators

C. only operands

D. neither operators nor operands

Contd..

3. The root of the expression tree of (a/b*c)+(5-4+(d*e+f)*g) isA. +

B. *

C. -

D. /

Contd..

4. Which one of the following statement is correct.A. ‘(‘ has highest precedence in the expression and lowest

precedence when present in the stack

B. ‘)‘ has highest precedence in the expression and lowest precedence when present in the stack

C. ‘(‘ has lowest precedence in the expression and lowest precedence when present in the stack

D. ‘(‘ has highest precedence in the expression and highest precedence when present in the stack

Contd..

5. The traversal technique which output the postfix notation of binary expression tree isA. pre-order traversal

B. converse post-order traversal

C. post order traversal

D. converse pre-order traversal

top related