
LeetCode之N叉树的最大深度(559)、二叉树的最大深度(104)、二叉树的最小深度(111)
递归函数定义:定义一个递归函数 终止条件:如果根节点为空,返回0。 遍历孩子节点:如果根节点有孩子节点,遍历每个孩子节点,递归调用 计算最大深度:将所有孩子节点的深度取最大值,然后返回这个最大值加一。 叶子节点处理:如果根节点没有孩子,返回1,因为根节点本身就是一个深度为1的叶子节点。
发布日期:2021-05-07 08:53:19
浏览次数:22
分类:精选文章
本文共 849 字,大约阅读时间需要 2 分钟。
为了计算N叉树的最大深度,我们可以使用递归的方法。递归函数遍历每个节点的所有孩子节点,计算每个孩子节点的深度,然后返回最大的深度加一。如果一个节点没有孩子,返回1,因为根节点本身就是一个深度为1的叶子节点。
方法思路
maxDepth
,接受树的根节点作为参数。maxDepth
计算每个孩子的深度。解决代码
class Solution: def maxDepth(self, root): if root is None: return 0 if root.children: # 如果有孩子节点 max_child_depth = max(self.maxDepth(child) for child in root.children) return max_child_depth + 1 else: # 没有孩子节点,即叶子节点 return 1
代码解释
- 递归函数:函数
maxDepth
使用递归来计算树的最大深度。 - 终止条件:如果根节点为空,直接返回0。
- 遍历孩子节点:使用生成器表达式遍历根节点的所有孩子节点,计算每个孩子节点的深度。
- 返回最大深度:返回所有孩子节点深度中的最大值加一,即为当前节点的深度。
- 叶子节点处理:如果没有孩子节点,返回1,表示当前节点本身的深度。
这种方法确保了我们能够正确计算N叉树的最大深度,时间复杂度为O(N),其中N是树中结点的总数。空间复杂度为O(N),因为在最坏情况下,递归深度可能达到树的高度。
发表评论
最新留言
路过按个爪印,很不错,赞一个!
[***.219.124.196]2025年03月20日 20时08分47秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
动态点击a标签
2019-03-05
@RequestBody和@RequestParam
2019-03-05
oracle创建序列语法
2019-03-05
springboot通过控制层跳转页面404
2019-03-05
idea2020 没有 tomcat server
2019-03-05
jq动态修改元素的onclick属性的值
2019-03-05
为什么讨厌所谓仿生AI的说法
2019-03-05