題目
給你一棵二叉樹的根節點,返回該樹的 直徑 。
二叉樹的 直徑 是指樹中任意兩個節點之間最長路徑的 長度 。這條路徑可能經過也可能不經過根節點 root 。
兩節點之間路徑的 長度 由它們之間邊數表示。
代碼
方法:遞歸
計算二叉樹的直徑可以理解為計算左、右子樹的深度減一相加,然后再加上根節點左右后條邊。
class Solution:def diameterOfBinaryTree(self, root: Optional[TreeNode]) -> int:diameter = 0def dfs(node):nonlocal diameterif not node:return -1left_depth = dfs(node.left)right_depth = dfs(node.right)diameter = max(diameter, left_depth + right_depth + 2)return max(left_depth, right_depth) + 1dfs(root)return diameter