leetcode 104 二叉树的最大深度

简介: leetcode 104 二叉树的最大深度

二叉树的最大深度


d5874f93ec1e4b398bce28c0e395d3a8.png

层次遍历

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
 *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
 *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
 * };
 */
class Solution {
public:
    int maxDepth(TreeNode* root) {
        TreeNode* node ; //迭代节点
        queue<TreeNode*> my_que; //队列
        int result = 0;
        if(root == nullptr) return result;
        else // 根节点进队列
        {
            my_que.push(root);
        }
        while(my_que.empty() != 1)
        {
            int size = my_que.size();
          result +=1;//计算层级数量
            for(int i=0 ; i<size ; i++) 
            {
                node = my_que.front(); //该层级的点弹出放入数组
                my_que.pop();
                //每一个弹出点的下一个层级左右节点压入队列
                if(node->left != nullptr)    my_que.push(node->left);
                if(node->right != nullptr)   my_que.push(node->right);
            }
        }
        return result;
    }
};

递归遍历

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
 *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
 *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
 * };
 */
class Solution {
public:
    int getdepth(TreeNode* root)
    {
        if(root==nullptr) return 0;
        int left_depth = getdepth(root->left);
        int right_depth = getdepth(root->right);
        return 1+max(left_depth , right_depth);
    }
    int maxDepth(TreeNode* root) {
        if(root == nullptr) return 0;
        return getdepth(root);
    }
};

二刷

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
 *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
 *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
 * };
 */
class Solution {
public:
    int maxDepth(TreeNode* root) {
        if(root == nullptr ) return 0;
        int left_deep = maxDepth(root->left);
        int right_deep = maxDepth(root->right);
        return max(left_deep,right_deep) + 1;
    }
};
相关文章
|
19天前
leetcode代码记录(二叉树的所有路径
leetcode代码记录(二叉树的所有路径
13 0
|
7天前
【力扣刷题】二叉树的中序遍历、二叉树的最大深度、翻转二叉树、对称二叉树
【力扣刷题】二叉树的中序遍历、二叉树的最大深度、翻转二叉树、对称二叉树
14 0
|
10天前
|
存储 Java
JAVA数据结构刷题 -- 力扣二叉树
JAVA数据结构刷题 -- 力扣二叉树
16 0
|
11天前
[LeetCode]—— 226——翻转二叉树
[LeetCode]—— 226——翻转二叉树
|
11天前
[LeetCode]——965——单值二叉树
[LeetCode]——965——单值二叉树
|
11天前
LeetCode——101——对称二叉树
LeetCode——101——对称二叉树
35 12
|
11天前
|
存储
LeetCode———144—— 二叉树的前序遍历
LeetCode———144—— 二叉树的前序遍历
|
11天前
LeetCode——965. 单值二叉树
LeetCode——965. 单值二叉树
|
13天前
|
算法
数据结构与算法⑮(第四章_下)二叉树OJ(力扣:144,965,104,110,226,100,101,572)(下)
数据结构与算法⑮(第四章_下)二叉树OJ(力扣:144,965,104,110,226,100,101,572)
7 1
|
13天前
|
算法 C++
数据结构与算法⑮(第四章_下)二叉树OJ(力扣:144,965,104,110,226,100,101,572)(上)
数据结构与算法⑮(第四章_下)二叉树OJ(力扣:144,965,104,110,226,100,101,572)
7 1