LeetCode第 543 題:二叉樹的直徑(C++)
求的是直徑,這個直徑的描述還是有點不好明白的:任意兩個結點路徑長度中的最大值。
需要注意:直徑不一定會過根節點,所以每個節點都有可能是直徑的“支點”,計算的時候就需要不停的更新。
class Solution {
public:
int res = 0;
int diameterOfBinaryTree(TreeNode* root) {
if(!root) return 0;
dfs(root);
return res;
}
int dfs(TreeNode* root){
if(!root) return 0;//為空
if(!root->left && !root->right) return 1;//加上這一行會快很多
int l = dfs(root->left);
int r = dfs(root->right);
//左右子樹相對根節點的路徑和即為以根節點為支點的直徑
res = max(res, l+r);
return 1 + max(l, r);
}
};
相關文章
- leetcode 每日一題 543 二叉樹的直徑 dfs方法LeetCode每日一題二叉樹
- 二叉樹任意兩個節點間的最大距離(Java,LeetCode 543二叉樹的直徑 遞迴)二叉樹JavaLeetCode遞迴
- 二叉樹最大距離(直徑)二叉樹
- C++二叉樹筆試題C++二叉樹筆試
- JavaScript實現-LeetCode刷題-【對稱二叉樹】-第101題!!!JavaScriptLeetCode二叉樹
- 【LeetCode擊敗99%+】二叉樹路徑總和LeetCode二叉樹
- Codeforces 455C Civilization:樹的直徑 + 並查集【合併樹後直徑最小】並查集
- 列印二叉樹的所有路徑二叉樹
- 演算法筆記 - 樹的直徑演算法筆記
- C++樹——遍歷二叉樹C++二叉樹
- LeetCode 124. 二叉樹中的最大路徑和 | PythonLeetCode二叉樹Python
- 二叉樹路徑總和二叉樹
- 二叉樹路徑查詢二叉樹
- 牛客題霸 [二叉樹中是否存在節點和為指定值的路徑] C++題解/答案二叉樹C++
- LeetCode題解(Offer26):判斷二叉樹A是否為二叉樹B的子樹(Python)LeetCode二叉樹Python
- 面試題34:二叉樹中和為某一值的路徑面試題二叉樹
- 第 34 題:如何實現二叉查詢樹?
- 力扣(LeetCode)543力扣LeetCode
- 【LeetCode-二叉樹】二叉樹前序遍歷LeetCode二叉樹
- leetcode 每日一題 617 合併二叉樹LeetCode每日一題二叉樹
- 【Leetcode千題】617. 合併二叉樹LeetCode二叉樹
- LeetCode題144. 二叉樹的前序遍歷LeetCode二叉樹
- 比酒量問題與二叉樹搜尋和路徑問題二叉樹
- 387,二叉樹中的最大路徑和二叉樹
- 二叉樹的子樹和子結構 c++二叉樹C++
- Leetcode 二叉樹題目集合 (看完這個面試不會做二叉樹題,辣條給你!!!!!)LeetCode二叉樹面試
- 5分鐘瞭解二叉樹之LeetCode裡的二叉樹二叉樹LeetCode
- LeetCode-230-二叉搜尋樹中第K小的元素LeetCode
- Leetcode230. 二叉搜尋樹中第K小的元素LeetCode
- Leetcode 題解系列 -- 對稱二叉樹(遞迴)LeetCode二叉樹遞迴
- leetcode 刷題視訊(5) - 二叉樹與圖LeetCode二叉樹
- LeetCode每日一題:二叉樹的最大深度(No.104)LeetCode每日一題二叉樹
- LeetCode 對稱二叉樹LeetCode二叉樹
- 每日一道演算法題--leetcode 124--二叉樹中的最大路徑和--python演算法LeetCode二叉樹Python
- 劍指offer——二叉樹的映象C++二叉樹C++
- 劍指offer——二叉樹的深度C++二叉樹C++
- 二叉查詢樹的實現——C++C++
- 相同二叉樹和鏡面二叉樹問題二叉樹