【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博客类似,有广度优先和深度优先(与上述解法一致)算法。

四、总结

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

相关推荐
_饭团21 小时前
指针核心知识:5篇系统梳理2
c语言·笔记·学习·leetcode·面试·改行学it
罗湖老棍子21 小时前
Maximum Subarray Sum II最大连续区间和(CSES- P1644)
算法·滑动窗口·单调队列
小年糕是糕手1 天前
【C++】string类(三)
开发语言·数据结构·c++·程序人生·算法
西装没钱买1 天前
C语言组播的使用
c语言·开发语言·udp·组播·组播绑定网卡
胖祥1 天前
onnx之NodeComputeInfo
开发语言·c++·算法
无限空间之王1 天前
我让三个 AI 互相竞争进化,两天后它们发明了一个我看不懂的算法
算法
sinat_255487811 天前
为 System.out 编写我们自己的包装类
java·开发语言·算法
阿Y加油吧1 天前
力扣打卡——盛最多水的容器、三数之和
算法·leetcode·排序算法
Barkamin1 天前
快速排序非递归实现
java·算法·排序算法
gihigo19981 天前
距离角度解耦法的MIMO-OFDM雷达波束形成及优化MATLAB实现
开发语言·算法·matlab