如何计算每个节点的子树(高度,二叉搜索树)之间的差异并返回最大差异?

问题描述 投票:0回答:0

标题基本上就是问题。我想找出所有节点的子树之间的最大差异(比较左右子树的高度)并返回最大值。我发现二叉树非常困难,所以我希望能参考有关该主题的好材料!

这是我试图想出的一般代码结构的粗略草图,但在如何进行时遇到困难。

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
python
© www.soinside.com 2019 - 2024. All rights reserved.