标题基本上就是问题。我想找出所有节点的子树之间的最大差异(比较左右子树的高度)并返回最大值。我发现二叉树非常困难,所以我希望能参考有关该主题的好材料!
这是我试图想出的一般代码结构的粗略草图,但在如何进行时遇到困难。
from collections import namedtuple
# ()
def diff1(node):
if not node:
return (0,0)
left = diff1(node.left)
right = diff1(node.right)
difference = abs(left[0]-right[0])
def diff2(node):
return diff1(node)[]
if __name__ == "__main__":
Node = namedtuple("Node", ["left", "right"])
tree = Node(None,Node(Node(None,None),Node(None,None)))
print(diff2(tree)) # 3