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: 194

Filed under:
|
|

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

Related posts about tree

Related posts about expression-trees