所以这是一个示例树
*
+ -
7 3 5 2
这应评估为30.(10 * 3)。
但重复这棵树的最佳方法是什么? 我认为重复到左侧,直到它击中一个数字,去它的父母,然后去右侧评估。但是,如果正确的节点有自己的孩子呢?我想我可以通过相同的公式评估该节点,但我对如何实现它感到困惑!任何帮助将不胜感激。
答案 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()