1
我想知道如何最優地找到二叉樹的直徑(或任何兩個葉節點之間的最長路徑)。我有下面的基本解決方案,但第二個解決方案需要通過指針。我如何在Python中做這樣的事情?在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));
對不起。 。 。 「任何兩個葉節點之間的最長路徑」是什麼意思?你是指最深節點的深度加上第二個最深節點的深度? – mgilson
另外,'&lheight'是什麼?你是從C/C++應對這段代碼嗎? – mgilson