2017-03-16 33 views
-4

我很努力地创建一个二进制表达式树,并没有找到我正在寻找什么在线。如何在Java中实现二进制表达式树?

+2

[Build Binary Expression Tree]的可能重复(http://stackoverflow.com/questions/9136153/build-binary-expression-tree) –

回答

1

要实现它,请从包含其自己的子项的结构开始。

public class Node { 
    public Node left; 
    public Node right; 
    public String payload; 

    Node(String payload){ 
    left = null; 
    right = null; 
    this.payload = payload; 
    } 

    Node(Node left, Node right, String payload){ 
    this.left = left; 
    this.right = right; 
    this.payload = payload; 
    } 
} 

然后使用递归方法将结果返回给调用的方法。

int total(Node point){ 
    if (point == null) return 0; 
    switch (point.payload){ 
     case "+": return total(point.left) + total(point.right); 
     case "-": return total(point.left) - total(point.right); 
     case "/": return total(point.left)/total(point.right); 
     case "*": return total(point.left) * total(point.right); 
     default: return Integer.parseInt(point.payload); 
    } 
}