Easy 543 - Diameter of Binary Tree
In this blog I will share a solution to the Diameter of Binary Tree problem.
題目連結
難度:Easy
給定一個二元樹的根節點,計算該樹的直徑長度。二元樹的直徑是任意兩個節點之間路徑長度中的最大值。
這條路徑可能穿過也可能不穿過根節點。
example:
example:
限制
- 樹中節點數在範圍 1, 10^4 內
- -100 <= Node.val <= 100
Tree
Depth-First Search
Binary Tree
解題思路
思考過程
- 初步分析
- 需要找出樹中任意兩點間的最長路徑
- 路徑不一定經過根節點
- 需要考慮左右子樹的高度
- 解題技巧
- 使用遞迴計算每個節點的高度
- 同時追蹤最大直徑
- 直徑 = 左子樹高度 + 右子樹高度
- 實作重點
- 使用全域變數記錄最大直徑
- 遞迴函式返回節點高度
- 注意處理空節點的情況
解題步驟
程式碼實現
複雜度分析
面向 | 複雜度 | 說明 |
---|---|---|
時間複雜度 | O(N) | 需要遍歷每個節點一次 |
空間複雜度 | O(H) | H 是樹的高度,遞迴調用棧的空間 |
解題重點
- 全域狀態
- 使用閉包保存最大直徑
- 避免重複計算