二叉樹任意兩個節點間的最大距離(Java,LeetCode 543二叉樹的直徑 遞迴)
題目
給定一棵二叉樹,你需要計算它的直徑長度。一棵二叉樹的直徑長度是任意兩個結點路徑長度中的最大值。這條路徑可能穿過也可能不穿過根結點
示例
給定二叉樹:
1 / \ 2 3 / \ 4 5
返回 3, 它的長度是路徑 [4,2,1,3] 或者 [5,2,1,3]。
注意:兩結點之間的路徑長度是以它們之間邊的數目表示。
程式碼
思路:
使用遞迴的方法,用一個全域性變數max
儲存最大距離
(一開始沒寫出來是因為把自己繞進去了,重點就在於,遞迴的時候,更新max
用leftMax+rightMax
,而返回leftMax和rightMax的較大值
)
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
int max = 0;
public int diameterOfBinaryTree(TreeNode root) {
getMax(root);
return max;
}
public int getMax(TreeNode node){
if(node == null){
return 0;
}
int leftMax = 0;
int rightMax = 0;
if(node.left != null){
leftMax = getMax(node.left);
}
if(node.right != null){
rightMax = getMax(node.right);
}
max = Math.max(leftMax + rightMax, max);
return Math.max(leftMax, rightMax) + 1;
}
}
相關文章
- LeetCode第 543 題:二叉樹的直徑(C++)LeetCode二叉樹C++
- leetcode 每日一題 543 二叉樹的直徑 dfs方法LeetCode每日一題二叉樹
- 【模板題】 543. 二叉樹的直徑二叉樹
- 783. 二叉搜尋樹節點最小距離
- 二叉樹的遞迴套路二叉樹遞迴
- LeetCode-222-完全二叉樹的節點個數LeetCode二叉樹
- 二叉樹:距離最近的共同祖先二叉樹
- LeetCode 124. 二叉樹中的最大路徑和 | PythonLeetCode二叉樹Python
- Day16 | 104.二叉樹的最大深度 、111.二叉樹的最小深度 、222.完全二叉樹的節點個數二叉樹
- LeetCode 104.二叉樹的最大深度LeetCode二叉樹
- Leetcode 題解系列 -- 對稱二叉樹(遞迴)LeetCode二叉樹遞迴
- 遍歷二叉樹-------遞迴&非遞迴二叉樹遞迴
- 387,二叉樹中的最大路徑和二叉樹
- 008,二叉樹的下一個節點二叉樹
- 什麼是遍歷二叉樹,JavaScript實現二叉樹的遍歷(遞迴,非遞迴)二叉樹JavaScript遞迴
- LeetCode654. 最大二叉樹LeetCode二叉樹
- 到達二叉樹目標節點的完整路徑二叉樹
- 程式碼隨想錄演算法訓練營day16 | leetcode 104. 二叉樹的最大深度、559. N 叉樹的最大深度、111. 二叉樹的最小深度、222. 完全二叉樹的節點個數演算法LeetCode二叉樹
- day 15|二叉樹part03|110.平衡二叉樹|257. 二叉樹的所有路徑|404.左葉子之和| 222.完全二叉樹的節點個數二叉樹
- 二叉平衡樹 python 列表 遞迴Python遞迴
- 124. 二叉樹中的最大路徑和二叉樹
- LeetCode——671. 二叉樹中第二小的節點LeetCode二叉樹
- 快速求完全二叉樹的節點個數二叉樹
- 二叉樹的四種遍歷(遞迴與非遞迴)二叉樹遞迴
- 程式碼隨想錄——二叉樹-11.完全二叉樹的節點個數二叉樹
- 如何計算二叉樹中葉節點的數量 - Java迭代和遞迴演算法二叉樹Java遞迴演算法
- 二叉樹建立後,如何使用遞迴和棧遍歷二叉樹?二叉樹遞迴
- 【C++】翻轉二叉樹(遞迴、非遞迴)C++二叉樹遞迴
- 程式碼隨想錄 第十六天 | ● 104.二叉樹的最大深度 559.n叉樹的最大深度 ● 111.二叉樹的最小深度 ● 222.完全二叉樹的節點個數二叉樹
- Day14 二叉樹Part2 遞迴的應用(二叉樹相關)二叉樹遞迴
- 樹3-二叉樹非遞迴遍歷(棧)二叉樹遞迴
- 二叉樹的非遞迴遍歷寫法二叉樹遞迴
- 遍歷二叉樹的迭代和遞迴方法二叉樹遞迴
- [Python手撕]二叉樹中的最大路徑和Python二叉樹
- 遞迴判斷是否二叉平衡樹遞迴
- 二叉樹的最大/最小深度二叉樹
- 二叉樹的最大深度20201231二叉樹
- 【LeetCode-二叉樹】二叉樹前序遍歷LeetCode二叉樹