給定一棵二叉樹,你需要計算它的直徑長度。一棵二叉樹的直徑長度是任意兩個結點路徑長度中的最大值。這條路徑可能穿過也可能不穿過根結點。
示例 :
給定二叉樹
1/ \
2 3
/ \
4 5
返回 3, 它的長度是路徑 [4,2,1,3] 或者 [5,2,1,3]。
注意:兩結點之間的路徑長度是以它們之間邊的數目表示。
思路:可以將二叉樹的直徑轉換為:二叉樹的 每個節點的左右子樹的高度和的最大值。
遍歷每乙個節點,以每乙個節點為中心點計算最長路徑(左子樹邊長+右子樹邊長),更新全域性變數max。
class
solution
:def
diameterofbinarytree
(self, root: treenode)
->
int:
ifnot root:
return
0 self.diam =
0 self.depth(root)
return self.diam
defdepth
(self, root):if
not root:
return
0 left = self.depth(root.left)
right = self.depth(root.right)
curr = left + right
if self.diam < curr:
self.diam = curr
return
max(left, right)
+1
二叉樹的直徑
題目 給定一棵二叉樹,你需要計算它的直徑長度。一棵二叉樹的直徑長度是任意兩個結點路徑長度中的最大值。這條路徑可能穿過根結點。示例 給定二叉樹 返回 3,它的長度是路徑 4,2,1,3 或者 5,2,1,3 注意 兩結點之間的路徑長度是以它們之間邊的數目表示。思想 我們不難發現這個問題的本質就是求每個...
二叉樹的直徑
題目 給定一棵二叉樹,你需要計算它的直徑長度。一棵二叉樹的直徑長度是任意兩個結點路徑長度中的最大值。這條路徑可能穿過也可能不穿過根結點。definition for a binary tree node.public class treenode class solution diameterofb...
二叉樹的直徑
給定一棵二叉樹,你需要計算它的直徑長度。一棵二叉樹的直徑長度是任意兩個結點路徑長度中的最大值。這條路徑可能穿過也可能不穿過根結點。示例 給定二叉樹 返回 3,它的長度是路徑 4,2,1,3 或者 5,2,1,3 概念理解 這條路徑可能穿過也可能不穿過根結點 任意一條路徑可由某結點為起點,再向下遍歷其...