The Gateway to Computer Science Excellence
+25 votes
Compute the post fix equivalent of the following expression $3^*\log(x+1)-\frac{a}{2}$
in DS by
retagged by | 4.3k views
postfix of log(x+1)  will be ??
it will be       x1+log
how ?
in uninary operator we do firstly takes the value i.e x+1 and then apply what opration we want here log so firstly x+1 convert into psotfix then applly log on it  other example is (a+1)++ for that we  firstly  convert a+1 into postfix  then apply operation increment

so unary opern of  log(x1+) == x1+log ??

yes u can say
just construct expression tree and do post order need to worry about priorities

9 Answers

+65 votes
Best answer
The priority of the operators follows the usual conventions:
  • The highest priority is assigned to unary operators (note that, in this context, a function such as sin  is considered a unary operator). All unary operators have the same priority.
  • Exponentiation has the second highest priority.
  • The third highest priority is assigned to the multiplication and division operators.
  • The lowest priority is given to the addition and subtraction operators. 
Infix expression:   $3  * \log(  10  )$
Postfix expression:
$=3  *   (10 \log)$   //(Priority of unary operator log forces $\log( 10 )$ to evaluate first.)
$=3  \ 10  \log  *$

Now for our case $3*\log(x + 1) - a / 2$

First content inside parenthesis will be evaluated

So, $x+1$ will become $x\;1+$

Now among $(*,/,\log,+,-)$ operators, $\log$ has highest priority as it is the only unary operator

So, $\log(x\;1+)$ will become ${x\;1+\log}$

Now suppose ${z= x1+\log}$ and we get  $3* z - a / 2$

$\implies 3z* a\;2/ -$

Now, substitute $z= x\;1+\log$ and we get

$\mathbf{3x\;1+\log*  a\;2/  -}$ as answer.

edited by
thanx a lot
But in C lang, there is no exponentiation operator!
+13 votes
$3 x 1 + \log * a 2 / -$
my doubt is how to separate log(x+1)
log is a unary operator here, so when we see log in postfix expression, we pop only top element of stack, which is x+1, and apply log on that.
consider this:

1)  a++  : write postfix

2) ++a + b++  : write postfix
i m not getting it ..... can you please explain me ...


by the expanding it .... fully
brother how to write the postfix of these two??
1. a++ ,  do i have to expand like a=a+1 and then proceed?  Please explain in detail.
2 ++a + b++
+10 votes

We can do directly(manually) =>

3*log(x + 1) - a / 2

= ((3*(log(x + 1))) - (a / 2))

= ((3*log(x1+))) - (a2/))

= ((3*x1+log) - (a2/))

= ((3x1+log*) - (a2/))

= 3x1+log*a2/- 

+9 votes

Given infix expression : $3*log(x+1)- \frac{a}{2}$

Expression tree :

Do a postorder traversal of the above tree to get postfix expression: $3x1+log*a2/-$

by 1 flag:
✌ Edit necessary (prithatiti “Expression tree is wrong.”)
How to make the expression tree just by looking at the Infix expression.
this expression tree is wrong correct expression tree should be:
 expression tree just do postorder evaluation of this to get the amswer.    
          /    \
         *      /
        /  \    /  \
       3   log a  2
            /   \
                /  \
               x    1
+2 votes

Answer attached

+1 vote

Using Stack (Standard method)

+1 vote

Why to go for long description, draw tree and enjoy what you want prefix, infix postfix or even converse pre, in and post.


Once go from my ans.

0 votes

we know that in infix expression, operator that is being evaluated at last is root.

Therefore,  3∗log(x+1)−a/2 infix expression can be shown in tree as-

- is evaluated at last here, so we can write it at first in tree, hence the root.

Similarly for other operators like

(x+1) is evaluated at very first therefore we can write it at last in the below tree.


Now traverse it in postfix fashion like Left Right Root, we can get the following postfix expression as:



Quick search syntax
tags tag:apple
author user:martin
title title:apple
content content:apple
exclude -tag:apple
force match +apple
views views:100
score score:10
answers answers:2
is accepted isaccepted:true
is closed isclosed:true
52,315 questions
60,426 answers
95,226 users