LeetCode543 二叉樹的直徑
阿新 • • 發佈:2021-06-19
題目
給定一棵二叉樹,你需要計算它的直徑長度。一棵二叉樹的直徑長度是任意兩個結點路徑長度中的最大值。這條路徑可能穿過也可能不穿過根結點。
示例 :
給定二叉樹
1
/ \
2 3
/ \
4 5
返回 3, 它的長度是路徑 [4,2,1,3] 或者 [5,2,1,3]。
注意:兩結點之間的路徑長度是以它們之間邊的數目表示。
方法
遞迴法
在計算深度時計算的是節點的個數,題目所求為邊的個數,因此要res-1
- 時間複雜度:O(n),n為二叉樹的節點數
- 空間複雜度:O(h),h為二叉樹的深度,每次遞迴都要分配棧空間,遞迴的次數取決於二叉樹的深度
class Solution { int res = 0; public int diameterOfBinaryTree(TreeNode root) { findMaxDepth(root); return res-1; } private int findMaxDepth(TreeNode root){ if(root==null){ return 0; } int left = findMaxDepth(root.left); int right = findMaxDepth(root.right); res = Math.max(res,left+right+1); return Math.max(left,right)+1; } }