当前位置: 首页 > news >正文

104、二叉树的最大深度

文章目录

    • 题目
    • 递归代码
    • 深度优先搜索(DFS)代码
    • 深度优先搜索原理图及解释
    • 广度优先搜索(BFS)代码
    • 广度优先搜索原理图及解释
    • 结束

题目

二叉树:二叉树的最大深度
给定一个二叉树 root ,返回其最大深度。

二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。

示例 1:
在这里插入图片描述

输入:root = [3,9,20,null,null,15,7]
输出:3
示例 2:

输入:root = [1,null,2]
输出:2

提示:

树中节点的数量在 [0, 104] 区间内。
-100 <= Node.val <= 100

递归代码

/**
 * 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)
        {
            return 0;
        }
        return max(maxDepth(root->left),maxDepth(root->right))+1;
    }
};

深度优先搜索(DFS)代码

超出内存限制


/**
 * 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)
        {
            return 0;
        }
        int depth=0;
        stack<pair<TreeNode*,int>> s;
        s.push({root,1});
        while(!s.empty())
        {
            auto temp=s.top();
            s.pop();
            depth=max(depth,temp.second);
            if(temp.first->right)
            {
                s.push({temp.first,temp.second+1});
            }
            if(temp.first->left)
            {
                s.push({temp.first,temp.second+1});
            }
        }
        return depth;
    }
};

深度优先搜索原理图及解释

在这里插入图片描述
需要用到栈
①首先将结点3压栈,深度为1,与初始化的深度大小比较,然后3出栈。
②遍历结点3的右子树20入栈深度为2,左子树9入栈深度为2,栈顶元素9出栈,比较深度,找9的左右子树为空。
③栈顶元素20出栈,比较深度大小,遍历左右子树,7入栈深度为3,15入栈深度为3。
④栈顶元素15出栈,比较深度大小,遍历左右子树为空。
⑤栈顶元素7出栈,比较深度大小,最大深度为3,遍历左右子树为空。
⑥栈为空,循环结束,返回最大深度。

广度优先搜索(BFS)代码

内存超出限制

/**
 * 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)
        {
            return 0;
        }
       queue<pair<TreeNode*,int>> q;
       int depth=0;
       q.push({root,1});
       while(!q.empty())
       {
            auto temp=q.front();
            q.pop();
            depth=max(depth,temp.second);
            if(temp.first->left)
            {
                q.push({temp.first,temp.second+1});
            }
            if(temp.first->right)
            {
                q.push({temp.first,temp.second+1});
            }
       }
       return depth;
    }
};

广度优先搜索原理图及解释

需要用到队列
在这里插入图片描述
初始化深度为0
①首先3入队,深度为1,保存好结点3,结点3出队,比较深度大小,将3的左右子树9、20入队,深度为2
②9出队,比较深度大小,左右子树为空。
③20出队,比较深度大小,左右子树入队15、7深度为3。
④15出队,比较深度大小,左右子树为空。
⑤7出队,比较深度大小,左右子树为空,最大深度为3。
⑥整个队列为空循环结束,返回最大深度。

结束

在这里插入图片描述

原理图借鉴哔站华南溜达虎,如有侵权联系删除。

相关文章:

  • 同步buck型降压DCDC芯片外围电路详解
  • 一款利器提升 StarRocks 表结构设计效率
  • 图片旋转方向分类:从零开始构建深度学习模型
  • 10、《Thymeleaf模板引擎:动态页面开发全攻略》
  • 如何有效防止TikTok多店铺入驻时IP关联问题?
  • [鸿蒙笔记-基础篇_自定义构建函数及自定义公共样式]
  • 网络安全技术复习总结
  • 【Python深入浅出㊷】探索Python3中scikit-learn的无限可能
  • QtWebEngine::initialize()
  • MySQL查看存储过程和存储函数
  • 2025 AutoCable 中国汽车线束线缆及连接技术创新峰会启动报名!
  • vscode本地和远程对应分支没有同步提交数量
  • 从零开始认识大语言模型(LLM)
  • 尚航科技助力DeepSeek正式登陆无锡
  • 探秘Hugging Face与DeepSeek:AI开源世界的闪耀双子星
  • EtherCAT技术介绍
  • 深度学习中的知识蒸馏
  • 曼哈顿距离:菱形打印与路径规划
  • mysql读写分离与proxysql的结合
  • springboot中通过@Autowired依赖注入关联@RestControl@Service @Mapper @Data@TableName实现接口服务
  • 美国再工业化进程需要中国的产业支持
  • 刘元春在《光明日报》撰文:以法治护航民营经济高质量发展
  • 冯德莱恩:欧美贸易谈判前不会前往美国会见特朗普
  • 拿出压箱底作品,北京交响乐团让上海观众享受音乐盛宴
  • 2025世界数字教育大会将于5月14日至16日在武汉举办
  • 全国人大常委会启动食品安全法执法检查