LeetCode——二叉樹的直徑
阿新 • • 發佈:2020-09-14
Q:給定一棵二叉樹,你需要計算它的直徑長度。一棵二叉樹的直徑長度是任意兩個結點路徑長度中的最大值。這條路徑可能穿過也可能不穿過根結點。
示例 :
給定二叉樹
1
/ \
2 3
/ \
4 5
返回 3, 它的長度是路徑 [4,2,1,3] 或者 [5,2,1,3]。
注意:兩結點之間的路徑長度是以它們之間邊的數目表示。
A:
對每個節點計算直徑(左子樹深度+右子樹深度+2),更新全域性變數。
int ans; public int diameterOfBinaryTree(TreeNode root) { ans = 1; depth(root); return ans - 1; } public int depth(TreeNode node) { if (node == null) return 0; // 訪問到空節點了,返回0 int L = depth(node.left); // 左兒子為根的子樹的深度 int R = depth(node.right); // 右兒子為根的子樹的深度 ans = Math.max(ans, L+R+1); // 計算d_node即L+R+1 並更新ans return Math.max(L, R) + 1; // 返回該節點為根的子樹的深度 }