LeetCode 104.二叉樹的最大深度
LeetCode 104.二叉樹的最大深度
題目描述
給定一個二叉樹,找出其最大深度。
二叉樹的深度為根節點到最遠葉子節點的最長路徑上的節點數。
說明: 葉子節點是指沒有子節點的節點。
示例:
給定二叉樹 [3,9,20,null,null,15,7],
返回它的最大深度 3 。
解題
自下而上遞迴
設計這樣一個遞迴函式,它能返回當前節點的最大深度,如果當前節點為NULL,返回0,否則當前節點的最大深度為其左右子節點對遞迴函式的呼叫結果的最大值+1,這種是自下而上的方法,它先計運算元節點的最大深度,層層向上。
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
int maxDepth(TreeNode* root) {
if (root==NULL) return 0;
return max(maxDepth(root->left), maxDepth(root->right))+1;
}
};
自上而下遞迴
這種思路就是從上向下,從根節點出發,我們知道當前父節點的深度,那麼如果子節點不為NULL,則深度+1,繼續向下傳遞,直到當前節點為空,即父節點為葉節點,如果當前深度比儲存的最大深度要大,則對最大深度更新,最終返回儲存的最大深度。
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
private:
int maxD = 0;
public:
int maxDepth(TreeNode* root, int curD=0) {
if (root!=NULL){
maxDepth(root->left, curD+1);
maxDepth(root->right, curD+1);
}
else
maxD = max(curD, maxD);
return maxD;
}
};
相關文章
- 104. 二叉樹的最大深度二叉樹
- Day16 | 104.二叉樹的最大深度 、111.二叉樹的最小深度 、222.完全二叉樹的節點個數二叉樹
- 程式碼隨想錄演算法訓練營day16 | leetcode 104. 二叉樹的最大深度、559. N 叉樹的最大深度、111. 二叉樹的最小深度、222. 完全二叉樹的節點個數演算法LeetCode二叉樹
- 圖解精選 TOP 面試題 002 | 104. 二叉樹的最大深度圖解面試題二叉樹
- LeetCode每日一題:二叉樹的最大深度(No.104)LeetCode每日一題二叉樹
- 程式碼隨想錄 第十六天 | ● 104.二叉樹的最大深度 559.n叉樹的最大深度 ● 111.二叉樹的最小深度 ● 222.完全二叉樹的節點個數二叉樹
- 二叉樹的最大/最小深度二叉樹
- 二叉樹的最大深度20201231二叉樹
- 二叉樹的最大深度和最小深度二叉樹
- [Golang]力扣Leetcode—初級演算法—樹—二叉樹的最大深度Golang力扣LeetCode演算法二叉樹
- leetcode 111 二叉樹的最小深度LeetCode二叉樹
- LeeCode-104. 二叉樹的最大深度二叉樹
- 程式碼隨想錄演算法訓練營第第16天 | 104.二叉樹的最大深度 、111.二叉樹的最小深度、222.完全二叉樹的節點個數演算法二叉樹
- 程式碼隨想錄演算法訓練營第十六天 | 104.二叉樹的最大深度 111.二叉樹的最小深度 222.二叉樹的節點個數演算法二叉樹
- Leetcode 559. N叉樹的最大深度LeetCode
- LeetCode654. 最大二叉樹LeetCode二叉樹
- 程式碼隨想錄演算法訓練營第十四天|leetcode226. 翻轉二叉樹、leetcode101.對稱二叉樹、leetcode104.二叉樹的最大深度、leetcode111.二叉樹的最小深度演算法LeetCode二叉樹
- 「leetcode」111.二叉樹的最小深度LeetCode二叉樹
- 程式碼隨想錄演算法訓練營第十四天| 226.翻轉二叉樹 、101. 對稱二叉樹、104.二叉樹的最大深度 (優先掌握遞迴)、111.二叉樹的最小深度演算法二叉樹遞迴
- 程式碼隨想錄day14 || 226 翻轉二叉樹,101 對稱二叉樹, 104 二叉樹的最大深度, 111 二叉樹的最小深度二叉樹
- LeetCode每日一題: N叉樹的最大深度(No.559)LeetCode每日一題
- LeetCode 124. 二叉樹中的最大路徑和 | PythonLeetCode二叉樹Python
- 二叉樹的深度二叉樹
- 【LeetCode刷題(中等程度)】662. 二叉樹最大寬度LeetCode二叉樹
- 二叉樹深度二叉樹
- 二叉樹---深度二叉樹
- 二叉樹任意兩個節點間的最大距離(Java,LeetCode 543二叉樹的直徑 遞迴)二叉樹JavaLeetCode遞迴
- 程式碼隨想錄演算法訓練營第十七天|leetcode654. 最大二叉樹、leetcode617.合併二叉樹、leetcode700.二叉搜尋樹中的搜尋、leetcode98.驗證二叉搜尋樹演算法LeetCode二叉樹
- 【leetcode 簡單】第二十七題 二叉樹的最小深度LeetCode二叉樹
- 【LeetCode-二叉樹】二叉樹前序遍歷LeetCode二叉樹
- 二叉樹的子結構、深度以及重建二叉樹二叉樹
- LeetCode 對稱二叉樹LeetCode二叉樹
- 5分鐘瞭解二叉樹之LeetCode裡的二叉樹二叉樹LeetCode
- 111. 二叉樹的最小深度(***)二叉樹
- 111. 二叉樹的最小深度二叉樹
- JZ-038-二叉樹的深度二叉樹
- 二叉樹的最小深度問題二叉樹
- Python二叉樹的三種深度Python二叉樹