可视化图解算法:二叉树的最大深度(高度)

1. 题目

描述

求给定二叉树的最大深度,

深度是指树的根节点到任一叶子节点路径上节点的数量。

最大深度是所有叶子节点的深度的最大值。

(注:叶子节点是指没有子节点的节点。)

数据范围:0 ≤n ≤100000,树上每个节点的val满足∣val∣≤100 要求: 时间复杂度 O(n)

示例1

输入:

复制代码
{1,2}

返回值:

复制代码
2

示例2

输入:

复制代码
{1,2,3,4,#,#,5}

返回值:

复制代码
3

2. 解题思路

二叉树的最大深度(高度)可以通过递归来实现。对于一个节点来说,最大深度(高度)可以这样计算:左右子树的最大深度(高度)+1(1为当前节点对应的高度)。

先来看看是否满足递归的条件:

可以看出,求解二叉树的最大深度(高度)可以采用递归。对于一个节点来说,最大深度(高度)为:左右子树的最大深度(高度)+1(1为当前节点对应的高度)。因此对应的递推公式如下:

如果文字描述的不太清楚,你可以参考视频的详细讲解。

3. 编码实现

核心代码如下:

Go 复制代码
/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 *
 * @param root TreeNode类
 * @return int整型
 */
func maxDepth(root *TreeNode) int {
	// write code here
	// 2. 递归终止条件:节点为空,深度为0
	if root == nil {
		return 0
	}

	// 1. 问题分解(递推公式)
	// 1.1 获取左子树的深度
	leftMax := maxDepth(root.Left)
	// 1.2 获取右子树的深度
	rightMax := maxDepth(root.Right)
	// 左右子树的最大值
	maxValue := int(math.Max(float64(leftMax), float64(rightMax)))
	// 1.3 返回:左右子树深度的最大值+1(当前节点)
	return maxValue + 1

}

具体完整代码你可以参考下面视频的详细讲解。

4.小结

二叉树的最大深度(高度)可以通过递归来实现。对于一个节点来说,最大深度(高度)可以这样计算:左右子树的最大深度(高度)+1(1为当前节点对应的高度)。


《数据结构与算法》深度精讲课程正式上线啦!七大核心算法模块全解析:

✅ 链表 ✅ 二叉树 ✅二分查找、排序 ✅ 堆、栈、队列 ✅回溯算法 ✅ 哈希算法 ✅ 动态规划

无论你是备战笔试面试、提升代码效率,还是突破技术瓶颈,这套课程都将为你构建扎实的算法思维底座。🔥立即加入学习打卡,与千名开发者共同进阶!

对于二叉树的相关算法,我们总结了一套【可视化+图解】方法,依据此方法来解决相关问题,算法变得易于理解,写出来的代码可读性高也不容易出错。具体也可以参考视频详细讲解。

今日佳句:云想衣裳花想容,春风拂槛露华浓。

相关推荐
cdut_suye11 分钟前
【Linux系统】从 C 语言文件操作到系统调用的核心原理
java·linux·数据结构·c++·人工智能·机器学习·云计算
wuqingshun31415911 分钟前
蓝桥杯 10. 全球变暖
c++·算法·职场和发展·蓝桥杯
手握风云-26 分钟前
二叉树深搜:在算法森林中寻找路径
算法
xu_wenming35 分钟前
华为Watch的ECG功能技术分析
人工智能·嵌入式硬件·算法
朱剑君38 分钟前
第六天——贪心算法——字符串分隔
算法
小刘不想改BUG1 小时前
LeetCode LCR 015. 找到字符串中所有字母异位词 (Java)
linux·算法·leetcode
灵典3361 小时前
数据结构入门-二叉树的层序遍历
数据结构·算法
范纹杉想快点毕业1 小时前
以项目的方式学QT开发(三)——超详细讲解(120000多字详细讲解,涵盖qt大量知识)逐步更新!
c语言·开发语言·c++·qt·mysql·算法·命令模式
补三补四1 小时前
随机森林(Random Forest)
人工智能·科技·算法·随机森林·机器学习
轮到我狗叫了1 小时前
力扣.1471数组的k个最强值,力扣.1471数组的k个最强值力扣1576.替换所有的问号力扣1419.数青蛙编辑力扣300.最长递增子序列
java·数据结构·算法