LeetCode之N叉树的最大深度(559)、二叉树的最大深度(104)、二叉树的最小深度(111)
发布日期:2021-05-07 08:53:19 浏览次数:22 分类:精选文章

本文共 849 字,大约阅读时间需要 2 分钟。

为了计算N叉树的最大深度,我们可以使用递归的方法。递归函数遍历每个节点的所有孩子节点,计算每个孩子节点的深度,然后返回最大的深度加一。如果一个节点没有孩子,返回1,因为根节点本身就是一个深度为1的叶子节点。

方法思路

  • 递归函数定义:定义一个递归函数 maxDepth,接受树的根节点作为参数。
  • 终止条件:如果根节点为空,返回0。
  • 遍历孩子节点:如果根节点有孩子节点,遍历每个孩子节点,递归调用 maxDepth 计算每个孩子的深度。
  • 计算最大深度:将所有孩子节点的深度取最大值,然后返回这个最大值加一。
  • 叶子节点处理:如果根节点没有孩子,返回1,因为根节点本身就是一个深度为1的叶子节点。
  • 解决代码

    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),因为在最坏情况下,递归深度可能达到树的高度。

    上一篇:机器学习笔记24——单层决策树(decision stump)原理以及python实现
    下一篇:LeetCode之N叉树的后序遍历(590)

    发表评论

    最新留言

    路过按个爪印,很不错,赞一个!
    [***.219.124.196]2025年03月20日 20时08分47秒

    关于作者

        喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
    -- 愿君每日到此一游!

    推荐文章