【Hot 100 刷题计划】 LeetCode 104. 二叉树的最大深度 | C++ 自底向上递归最优解

LeetCode 104. 二叉树的最大深度

📌 题目描述

题目级别:简单

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

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

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

💡 破题思路:自底向上递归 (Bottom-up DFS)

求树的最大深度,最优雅的方式是使用自底向上 的思维(其实也就是二叉树的后序遍历)。

我们可以这样思考:

如果我是一个节点,我怎么知道以我为根的这棵树有多深?

很简单,我只需要问我的左孩子:"你的左子树有多深?",再问我的右孩子:"你的右子树有多深?"。

我拿到他们俩的回答后,挑一个比较大的,然后加上我自己的这一层(+1),这就是我的最大深度!

然后我再把这个结果,理直气壮地汇报给我的父节点。

如此循环往复,直到最底层的空节点(空节点直接返回 0)。整个过程不需要借助任何外部的全局变量。


💻 C++ 代码实现 (1行代码极简版)

cpp 复制代码
class Solution {
public:
    int maxDepth(TreeNode* root) {
        // 递归终止条件:如果节点为空,深度就是 0
        if (root == nullptr) return 0;
        
        // 拿到左子树的最大深度
        int leftDepth = maxDepth(root->left);
        // 拿到右子树的最大深度
        int rightDepth = maxDepth(root->right);
        
        // 取两者的最大值,加上当前节点自己的这 1 层,向上返回
        return max(leftDepth, rightDepth) + 1;
        
        // 💡 极客装杯写法,只需一行代码:
        // return root ? max(maxDepth(root->left), maxDepth(root->right)) + 1 : 0;
    }
};
相关推荐
落羽的落羽35 分钟前
【项目】JsonRpc框架——开发实现1(细节功能、字段定义、抽象层、具象层)
linux·服务器·网络·c++·人工智能·算法·机器学习
handler011 小时前
【算法】并查集(普通/扩展/带权)模板与例题
数据结构·c++·笔记·算法·c·图论·查并集
qq7422349841 小时前
从“感知”到“决断”:测评百度伐谋产业决策智能体的端到端推理与行动机制
人工智能·算法·百度·大模型·运筹优化
huohaiyu2 小时前
深入解析Java垃圾回收机制
java·开发语言·算法·gc
浮芷.2 小时前
鸿蒙PC端 TTS 并发调用问题详解:资源竞争与队列管理
算法·华为·开源·harmonyos·鸿蒙·鸿蒙系统
装不满的克莱因瓶2 小时前
掌握感知器的学习原理
人工智能·python·神经网络·算法·ai·卷积神经网络
Lsk_Smion2 小时前
力扣实训 _ [994].腐烂的橘子/图论
算法·leetcode·图论
轻微的风格艾丝凡2 小时前
两电平三相VSC整流模式从不控整流平滑切换至有源整流调试记录
算法·dsp·c2000
dongf20193 小时前
R语言KNN算法
算法·数据分析·r语言
小O的算法实验室3 小时前
2025年IEEE TASE,基于双层耦合平均场博弈的大规模智能体集成任务分配与轨迹规划
人工智能·算法·机器学习