Python支持多个返回值,因此您不需要像C或C ++中那样的指针参数。这是代码的翻译:
def diameter_height(node): if node is None: return 0, 0 ld, lh = diameter_height(node.left) rd, rh = diameter_height(node.right) return max(lh + rh + 1, ld, rd), 1 + max(lh, rh)def find_tree_diameter(node): d, _ = diameter_height(node) return d
该函数
diameter_height返回树的直径和高度,并
find_tree_diameter使用它仅计算直径(通过丢弃高度)。
无论树的形状如何,函数均为O(n)。在最坏的情况下,由于重复的高度计算,树非常不平衡时,原始函数为O(n ^ 2)。



