題目描述:
給定一棵二叉樹,你需要計算它的直徑長度。一棵二叉樹的直徑長度是任意兩個結點路徑長度中的最大值。這條路徑可能穿過根結點。
示例 :
給定二叉樹
1返回 3, 它的長度是路徑 [4,2,1,3] 或者 [5,2,1,3]。/ \2 3
/ \
4 5
注意:兩結點之間的路徑長度是以它們之間邊的數目表示。
思路分析:
對於每乙個當前節點,選擇左、右節點中最大的長度,然後加上1(當前路徑),則是當前的最長路徑深度。全域性變數dis為直徑,每次取左、右節點深度的和。
**實現:
class solutionprivate int depth(treenode root)
int leftdepth = depth(root.left);
int rightdepth = depth(root.right);
//max記錄當前的最大直徑
max = math.max(leftdepth + rightdepth, max);
//由於我計算的直徑是左樹高度+右樹高度,所以這裡返回當前樹的高度,以供使用
return math.max(leftdepth, rightdepth) + 1;
}}
LeetCode 543 二叉樹的直徑
給定一棵二叉樹,你需要計算它的直徑長度。一棵二叉樹的直徑長度是任意兩個結點路徑長度中的最大值。這條路徑可能穿過根結點。示例 給定二叉樹 1 2 3 4 5 返回3,它的長度是路徑 4,2,1,3 或者 5,2,1,3 注意 兩結點之間的路徑長度是以它們之間邊的數目表示。解題思路 該題就是求解二叉樹中...
leetcode 543 二叉樹的直徑
給定一棵二叉樹,你需要計算它的直徑長度。一棵二叉樹的直徑長度是任意兩個結點路徑長度中的最大值。這條路徑可能穿過根結點。示例 給定二叉樹 1 2 3 4 5返回3,它的長度是路徑 4,2,1,3 或者 5,2,1,3 注意 兩結點之間的路徑長度是以它們之間邊的數目表示。小結 對於每個節點分別求解左 右...
Leetcode 543 二叉樹的直徑
題目描述 給定一棵二叉樹,你需要計算它的直徑長度。一棵二叉樹的直徑長度是任意兩個結點路徑長度中的最大值。這條路徑可能穿過根結點。思路 直徑長度 路徑的節點數 1 以每個節點為 根節點 的最長路徑,找出最大值。最長路徑上的節點數是 1 左子樹深度 右子樹深度 樹深度是1 max 左子樹深度,右子樹深度...