rendered paste bodypublic class test
{
public static int eval(ExpressionTree root)
{
if(!root.isOper())
return Integer.valueOf(""+root.getValue());
if((""+root.getValue()).equals("+"))
return eval(root.getLeft()) + eval(root.getRight());
if((""+root.getValue()).equals("*"))
return eval(root.getLeft()) * eval(root.getRight());
return 0;
}
public static String toInfixNotation(ExpressionTree root)
{
if(!root.isOper())
return ""+root.getValue();
return "(" + toInfixNotation(root.getLeft()) + " " +
root.getValue() + " " + toInfixNotation(root.getRight()) + ")";
}
public static void main()
{
ExpressionTree n5 = new ExpressionTree("4");
ExpressionTree n4 = new ExpressionTree("3");
ExpressionTree n3 = new ExpressionTree("*",n5,n4);
ExpressionTree n2 = new ExpressionTree("10");
ExpressionTree n1 = new ExpressionTree("+",n2,n3);
System.out.println(eval(n1));
System.out.println(toInfixNotation(n1));
}
}
public class ExpressionTree extends TreeNode
{
public ExpressionTree()
{
super(null);
}
public ExpressionTree(Object e)
{
super(e);
}
public ExpressionTree(Object e, ExpressionTree l, ExpressionTree r)
{
super(e,l,r);
}
public boolean isOper()
{
return (""+getValue()).equals("+") ||
(""+getValue()).equals("*");
}
public ExpressionTree getLeft()
{
return (ExpressionTree)super.getLeft();
}
public ExpressionTree getRight()
{
return (ExpressionTree)super.getRight();
}
}