2 votes 2 votes If we have to construct the expression tree from this expression (3 + ((5+9)*2)) then what will be the order of push and pop operation on a stack ?Explain what to do with each operator and operand along the way of push and pop operation DS data-structures expression-evaluation stack + – shekhar chauhan asked Jul 14, 2016 shekhar chauhan 1.7k views answer comment Share Follow See all 8 Comments See all 8 8 Comments reply vijaycs commented Jul 14, 2016 i edited by vijaycs Jul 14, 2016 reply Follow Share to make expression tree first of all we need to convert infix expression to postfix expression. For above infix - (3 + ((5 + 9 ) * 2 ) ) postfix - 3 5 9 + 2 * + now after getting postfix expression do following operation - 1. traverse postfix expression from start '3' to the last '+' operator/operand. 2. If it is operand than make a new node and make its data part to the operand and make its both child points to null and push the node into the stack. 3. if it is operator then first of all make new node and make its data part to the incoming operator and do two pop operation and make first popped node right child of the new node and second popped node to the left child of the new node and finally push the new node(containing operator as data part of node) into the stack. 4 votes 4 votes papesh commented Jul 14, 2016 reply Follow Share I'm not getting can be explain more..what is meaning of order and why we need to convert first into postfix 0 votes 0 votes shekhar chauhan commented Jul 14, 2016 reply Follow Share @vijay i did as you said initially 3 5 9 has been pushed onto the stack after that i encountered first operator for that i made 2 node first for 9 which will be right node and second for 5 as left node and i made "+" as parent of both now next we got 2 which i operand i pushed it on to the stack at this point we have 3 and 2 in stack now again we got * a operator now problem is for this operator should i pop both 3 and 2 and make then node and parent as * or should i pop only 2 . if both then what will be the position of both in expression tree and if one then why only one ? 0 votes 0 votes Tauhin Gangwar commented Jul 14, 2016 reply Follow Share @chauhan check once how they created tree. https://en.wikipedia.org/wiki/Binary_expression_tree 0 votes 0 votes shekhar chauhan commented Jul 14, 2016 reply Follow Share @Tauhin Thanks this link has cleared mu doubt ...i was looking at a different website that has not explained it so well. 1 votes 1 votes vijaycs commented Jul 14, 2016 reply Follow Share @sekhar .. I had forgotten one more thing to mention there in 3rd step -- after making left and right child .. now we need to push that node(parent node) containing operator as data part of node into the stack. 0 votes 0 votes shekhar chauhan commented Jul 14, 2016 reply Follow Share its okay i got it . 0 votes 0 votes Manoj_Kumar commented Jan 14, 2017 reply Follow Share Is it any rule that first poped node become right child of new node and second popped node become left child of new node. I think it depend upon the the operater associativity who cause two pop from stack. If incomming operator is left associativity then first poped node become right child of new node and second popped node become left child of new node. If incomming operator is right associativity then first poped node become left child of new node and second popped node become right child of new node. let me know am i correct? 0 votes 0 votes Please log in or register to add a comment.
3 votes 3 votes this is basic idea, if we want to implement it we can modify accordingly Pankaj kumar answered Jul 14, 2016 Pankaj kumar comment Share Follow See all 0 reply Please log in or register to add a comment.