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每日一題二叉樹
- 【模板題】 543. 二叉樹的直徑二叉樹
- 二叉樹任意兩個節點間的最大距離(Java,LeetCode 543二叉樹的直徑 遞迴)二叉樹JavaLeetCode遞迴
- 樹的直徑
- JavaScript實現-LeetCode刷題-【對稱二叉樹】-第101題!!!JavaScriptLeetCode二叉樹
- 【LeetCode擊敗99%+】二叉樹路徑總和LeetCode二叉樹
- LeetCode 124. 二叉樹中的最大路徑和 | PythonLeetCode二叉樹Python
- 求樹的直徑(BFS/DFS)
- 力扣(LeetCode)543力扣LeetCode
- LeetCode題144. 二叉樹的前序遍歷LeetCode二叉樹
- LeetCode-230-二叉搜尋樹中第K小的元素LeetCode
- Leetcode230. 二叉搜尋樹中第K小的元素LeetCode
- D48 樹的直徑 P3304 [SDOI2013] 直徑
- LeetCode題解(Offer26):判斷二叉樹A是否為二叉樹B的子樹(Python)LeetCode二叉樹Python
- 每日一道演算法題--leetcode 124--二叉樹中的最大路徑和--python演算法LeetCode二叉樹Python
- leetcode 每日一題 617 合併二叉樹LeetCode每日一題二叉樹
- 【Leetcode千題】617. 合併二叉樹LeetCode二叉樹
- LeetCode每日一題:二叉樹的最大深度(No.104)LeetCode每日一題二叉樹
- 【LeetCode-二叉樹】二叉樹前序遍歷LeetCode二叉樹
- 牛客題霸 [二叉樹中是否存在節點和為指定值的路徑] C++題解/答案二叉樹C++
- 演算法筆記 - 樹的直徑演算法筆記
- C++樹——遍歷二叉樹C++二叉樹
- Day4 樹的直徑、重心以及基環樹
- LeetCode每日一題: 翻轉二叉樹(No.226)LeetCode每日一題二叉樹
- leetcode 刷題視訊(5) - 二叉樹與圖LeetCode二叉樹
- Leetcode 題解系列 -- 對稱二叉樹(遞迴)LeetCode二叉樹遞迴
- leetcode 111 二叉樹的最小深度LeetCode二叉樹
- LeetCode 對稱二叉樹LeetCode二叉樹
- 二叉樹路徑查詢二叉樹
- 二叉樹路徑總和二叉樹
- [LeetCode] 543. Diameter of Binary TreeLeetCode
- LeetCode 543. Diameter of Binary TreeLeetCode
- 5分鐘瞭解二叉樹之LeetCode裡的二叉樹二叉樹LeetCode
- C/C++ 二叉樹C++二叉樹
- 第 34 題:如何實現二叉查詢樹?
- 面試題34:二叉樹中和為某一值的路徑面試題二叉樹
- LeetCode 104.二叉樹的最大深度LeetCode二叉樹
- 「leetcode」111.二叉樹的最小深度LeetCode二叉樹