在python

时间:2016-02-03 20:14:15

标签: python

所以这是一个示例树

            *
        +       -
      7   3   5   2

这应评估为30.(10 * 3)。

但重复这棵树的最佳方法是什么? 我认为重复到左侧,直到它击中一个数字,去它的父母,然后去右侧评估。但是,如果正确的节点有自己的孩子呢?我想我可以通过相同的公式评估该节点,但我对如何实现它感到困惑!任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:3)

你可以做一件显而易见的事:计算每个参数然后应用操作。

def evaluate(node):
  if node.payload.isOperation():
    return node.payload.compute(evaluate(node.left), evaluate(node.right))
  else:  # it's a constant
    return node.payload.asNumber()