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

四、总结

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

相关推荐
liebe1*128 分钟前
C语言程序代码(四)
c语言·数据结构·算法
进击的圆儿43 分钟前
递归专题4 - 网格DFS与回溯
数据结构·算法·递归回溯
程序猿20231 小时前
Python每日一练---第一天:买卖股票的最佳时机
算法
夏鹏今天学习了吗1 小时前
【LeetCode热题100(56/100)】组合总和
算法·leetcode·职场和发展
ZPC82102 小时前
opencv 获取图像中物体的坐标值
人工智能·python·算法·机器人
颇有几分姿色2 小时前
密码学算法分类指南
算法·密码学
绝无仅有2 小时前
某游戏大厂的 Redis 面试必问题解析
后端·算法·面试
chao1898442 小时前
C 文件操作全解速览
服务器·c语言·c#
微笑尅乐2 小时前
三种方法解开——力扣3370.仅含置位位的最小整数
python·算法·leetcode
MMjeaty2 小时前
查找及其算法
c++·算法