給定一棵二叉樹,你需要計算它的直徑長度。一棵二叉樹的直徑長度是任意兩個結點路徑長度中的最大值。這條路徑可能穿過也可能不穿過根結點。
示例 :
給定二叉樹
1 / \ 2 3 / \ 4 5
返回 3, 它的具體長度是路徑 [4,2,1,3] 或者 [5,2,1,3]。
注意:兩結點之間的路徑長度是以它們之間邊的數目表示。
【分析】
使用遞歸,並且我們還需要找到合適的根節點。這是本題的特點。
# Definition for a binary tree node. # class TreeNode: # def __init__(self, val=0, left=None, right=None): # self.val = val # self.left = left # self.right = right class Solution: def diameterOfBinaryTree(self, root: Optional[TreeNode]) -> int: self.ans = 1 def depth(root): if not root: return 0 L = depth(root.left) R = depth(root.right) self.ans = max(self.ans, L+R+1) return max(L, R) + 1 depth(root) return self.ans - 1