題目:543 二叉樹的直徑。
又名:求 二叉樹的 每個節點的左右子樹高度和 的最大值。
題目描述
給定一棵二叉樹,你需要計算它的直徑長度。一棵二叉樹的直徑長度是任意兩個結點路徑長度中的最大值。這條路徑可能穿過根結點。
算法思路
依然遞歸。
這裏是求每個節點作爲根節點時的高度和。
返回值爲最大深度。
直徑就是左右子樹的最大深度。
class Solution:
length=0
def diameterOfBinaryTree(self, root: TreeNode) -> int:
def dia(root):
if not root:return 0
leftlength=dia(root.left)
rightlength=dia(root.right)
self.length=max(self.length,leftlength+rightlength)
return max(leftlength,rightlength)+1
dia(root)
return self.length
執行用時 :48 ms, 在所有 Python3 提交中擊敗了80.63%的用戶
內存消耗 :15.9 MB, 在所有 Python3 提交中擊敗了10.72%的用戶