【发布时间】:2020-04-11 16:18:24
【问题描述】:
我想知道如何以最佳方式找到二叉树的直径(或任意两个叶节点之间的最长路径)。我有下面的基本解决方案,但第二种解决方案需要传递指针。我怎样才能在 Python 中做这样的事情?
def find_tree_diameter(node):
if node == None:
return 0
lheight = height(node.left)
rheight = height(node.right)
ldiameter = find_tree_diameter(node.left)
rdiameter = find_tree_diameter(node.right)
return max(lheight+rheight+1, ldiameter, rdiameter)
def find_tree_diameter_optimized(node, height):
lheight, rheight, ldiameter, rdiameter = 0, 0, 0, 0
if node == None:
# *height = 0;
return 0
ldiameter = diameterOpt(root.left, &lheight)
rdiameter = diameterOpt(root.right, &rheight)
# *height = max(lheight, rheight) + 1;
return max(lh + rh + 1, max(ldiameter, rdiameter));
【问题讨论】:
-
对不起。 . . “任何两个叶节点之间的最长路径”是什么意思?你的意思是最深节点的深度加上第二深节点的深度吗?
-
另外,
&lheight是什么?你是从 C/C++ 处理这段代码吗?