Evaluate an expression tree
        Posted  
        
            by Phronima
        on Stack Overflow
        
        See other posts from Stack Overflow
        
            or by Phronima
        
        
        
        Published on 2010-04-24T21:54:32Z
        Indexed on 
            2010/04/24
            22:13 UTC
        
        
        Read the original article
        Hit count: 255
        
Hi,
This project that I'm working on requires that an expression tree be constructed from a string of single digit operands and operators both represented as type char. I did the implmentation and the program up to that point works fine. I'm able to print out the inorder, preorder and postorder traversals in the correct way.
The last part calls for evaulating the expression tree. The parameters are an expression tree "t" and its root "root". The expression tree is ((3+2)+(6+2)) which is equal to 13. Instead I get 11 as the answer. Clearly I'm missing something here and I've done everything short of bashing my head against the desk.
I would greatly appreciate it if someone can point me in the right direction.
(Note that at this point I'm only testing addition and will add in the other operators when I get this method working.)
public int evalExpression( LinkedBinaryTree t, BTNode root ) {
    if( t.isInternal( root ) ) {
        int x = 0, y = 0, value = 0;
        char operator = root.element();
        if( root.getLeft() != null )
            x = evalExpression(t, t.left( root ) );
        if( root.getRight() != null )
            y = evalExpression(t, t.right( root ) );
        if( operator == '+' ) {
            value = value + Character.getNumericValue(x) + Character.getNumericValue(y);
        }
        return value;
    } else {
        return root.element();
    }
}
© Stack Overflow or respective owner