【LeetCode算法】第104题:二叉树的最大深度

目录

一、题目描述

二、初次解答

三、官方解法

四、总结


一、题目描述

二、初次解答

1. 思路: 二叉树的先序遍历。首先判断根节点是否是空,其次判断根节点是否是叶子节点,再者递归获取左子树的深度、右子树的深度,最后返回左子树、右子树的最大深度。此题与【LeetCode算法】第111题:二叉树的最小深度-CSDN博客类似。

2. 代码:

cpp 复制代码
int maxDepth(struct TreeNode* root) {
    //根节点为空
    if(!root) return 0;
    //根节点为叶子节点
    if(!(root->left) && !(root->right)) return 1;
    int leftDepth=maxDepth(root->left);     //递归左子树
    int rightDepth=maxDepth(root->right);   //递归右子树
    return leftDepth>rightDepth?leftDepth+1:rightDepth+1;   //返回左子树和右子树高度最大值
}

**3. 优点:**仅遍历一遍,时间复杂度为O(n)。

**4. 缺点:**采用递归算法,空间复杂度为O(H), H是二叉树的高度。

三、官方解法

【LeetCode算法】第111题:二叉树的最小深度-CSDN博客类似,有广度优先和深度优先(与上述解法一致)算法。

四、总结

计算二叉树的最大深度和最小深度,都可以通过二叉树的先序遍历。只不过最小深度需要额外考虑左子树为空和右子树为空这两个情况。

相关推荐
chao1898446 小时前
基于 SPEA2 的多目标优化算法 MATLAB 实现
开发语言·算法·matlab
沪漂阿龙6 小时前
AI大模型面试题:支持向量机是什么?间隔最大化、软间隔、核函数、LinearSVC 全面拆解
人工智能·算法·支持向量机
little~钰7 小时前
倍增算法和ST表
算法
知识领航员8 小时前
蘑兔AI音乐深度实测:功能拆解、实测表现与适用场景
java·c语言·c++·人工智能·python·算法·github
薛定e的猫咪8 小时前
因果推理研究方向综述笔记
人工智能·笔记·深度学习·算法
如何原谅奋力过但无声9 小时前
【灵神高频面试题合集06-08】反转链表、快慢指针(环形链表/重排链表)、前后指针(删除链表/链表去重)
数据结构·python·算法·leetcode·链表
平行侠9 小时前
037插入排序 - 整理扑克牌的算法
数据结构·算法
ECT-OS-JiuHuaShan9 小时前
彻底定理化:从量子纠缠到量子代谢
数据库·人工智能·学习·算法·生活·量子计算
爱喝雪碧的可乐10 小时前
2026 腾讯广告算法大赛优秀方案启示:行为条件化多模态自回归生成推荐摘要
算法·数据挖掘·回归·推荐系统·推荐算法