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

【递归】9. leetcode 104 二叉树的最大深度

1 题目描述

题目链接:二叉树的最大深度
在这里插入图片描述

2 解答思路

递归分为三步,接下来就按照这三步来思考问题

第一步:挖掘出相同的子问题  (关系到具体函数头的设计)
第二步:只关心具体子问题做了什么  (关系到具体函数体怎么写,是一个宏观的过程)
第三步:找到递归的出口,防止死递归  (关系到如何跳出递归)

2.1 相同的子问题(函数头设计)

相同的子问题:二叉树的最大深度:这棵树的左子树的深度和右子树的深度中的最大值 + 1

根据这句话,判断出函数头只需要传递一个参数,就是TreeNode* root

下面是leetcode的函数头:

    int maxDepth(TreeNode* root) {
    }

传入一个TreeNode* root的参数,返回二叉树的最大深度。

因此,我们可以直接使用leetcode给的函数头,不需要再自己创建。

2.2 具体的子问题做了什么(函数体的实现)

具体的子问题:找左子树的深度和右子树的深度的最大值 + 1

这里为什么要+1?

因为递归调用找到的子树的最大深度其实没有算上自己。因为只算上了子树的最大深度,所以要+1,算上自己的深度再返回。

递归的出口?

当节点为空的时候

代码实现:

    int maxDepth(TreeNode* root) {
        if (root == nullptr)
            return 0;
        
        //二叉树的最大深度:这棵树的左子树的深度和右子树的深度中的最大值 + 1
        return max(maxDepth(root->left), maxDepth(root->right)) + 1;
    }

在这里插入图片描述


http://www.kler.cn/news/329196.html

相关文章:

  • 位运算(4)_丢失的数字
  • React 的 useId 怎么使用
  • C#参数数组params的使用方法
  • UDP校验和计算及网络中的校验和机制
  • Arthas sc(查看JVM已加载的类信息 )
  • 构建electron项目
  • SpringBoot驱动的墙绘艺术在线展示平台
  • 【Linux】几种常见配置文件介绍
  • 英语词汇小程序小程序|英语词汇小程序系统|基于java的四六级词汇小程序设计与实现(源码+数据库+文档)
  • smb文件夹共享设置
  • 软件测试——Python和UnitTest框架
  • 【Router】路由功能之MAC地址过滤(MAC Filter)功能介绍及实现
  • 用友U8-CRM fillbacksettingedit.php SQL注入复现
  • 【C++】多态,虚函数,重载,重写,重定义,final,override,抽象类,虚函数表,动态绑定,静态绑定详解
  • Web安全 - 路径穿越(Path Traversal)
  • 头号积木玩家——软件工程专业职业生涯规划报告
  • Python知识点:如何使用PyO3进行Rust扩展
  • 后端开发如何提高项目系统的性能
  • B树、B+树
  • 爬虫入门 Selenium使用
  • SQL Server 2012 ldf日志文接太大的截断和收缩日志处理
  • Oracle 时间计算
  • Django一分钟:DRF ViewSet烹饪指南,创建好用的视图集
  • HTML+CSS 水滴登录页
  • C# 相等性检测方法差异分析(==,Equals,ReferenceEquals)
  • Kafka和RabbitMQ比较
  • LSTM模型实现光伏发电功率的预测
  • 滚雪球学MySQL[2.2讲]:基本数据操作详解:插入、查询、更新与删除
  • Linux 线程同步
  • 影院管理革新:小徐的Spring Boot应用