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

四、总结

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

相关推荐
努力长头发的程序猿1 小时前
Unity2D当中的A*寻路算法
算法·unity·c#
Raink老师2 小时前
用100道题拿下你的算法面试(矩阵篇-2):求转置矩阵
算法·面试·矩阵
算法鑫探8 小时前
闰年判断:C语言实战解析
c语言·数据结构·算法·新人首发
WBluuue8 小时前
数据结构与算法:康托展开、约瑟夫环、完美洗牌
c++·算法
木子墨5169 小时前
LeetCode 热题 100 精讲 | 并查集篇:最长连续序列 · 岛屿数量 · 省份数量 · 冗余连接 · 等式方程的可满足性
数据结构·c++·算法·leetcode
浅时光_c9 小时前
14 结构体 共用体 枚举类型
c语言
王老师青少年编程10 小时前
csp信奥赛C++高频考点专项训练之贪心算法 --【线性扫描贪心】:均分纸牌
c++·算法·编程·贪心·csp·信奥赛·均分纸牌
EQUINOX110 小时前
2026年码蹄杯 本科院校赛道&青少年挑战赛道提高组初赛(省赛)第一场,个人题解
算法
萝卜小白10 小时前
算法实习Day04-MinerU2.5-pro
人工智能·算法·机器学习
Liangwei Lin10 小时前
洛谷 P3133 [USACO16JAN] Radio Contact G
数据结构·算法