力扣559 - N叉树的最大深度

力扣559 - N叉树的最大深度

haimian
2024-11-10 / 0 评论 / 5 阅读 / 正在检测是否收录...
温馨提示:
本文最后更新于2024年11月10日,已超过161天没有更新,若内容或图片失效,请留言反馈。

今天还是日更一篇博文,刚开始的确没有想到,看了大佬的想法后做出来的,这个还是用的递归思想,
首先我们还是贴上题目
给定一个 N 叉树,找到其最大深度。

最大深度是指从根节点到最远叶子节点的最长路径上的节点总数。

N 叉树输入按层序遍历序列化表示,每组子节点由空值分隔(请参见示例)。

示例 1:

eg1

输入:root = [1,null,3,2,4,null,5,6]
输出:3
示例 2:

eg2

输入:root = [1,null,2,3,4,5,null,null,6,7,null,8,null,9,10,null,null,11,null,12,null,13,null,null,14]
输出:5

int maxDepth(struct Node* root) {
    if (root == NULL) {
        return 0;
    }
    if(root -> numChildren == 0) {
        return 1;
    }
    int maxdepth = 0;
    for (int i = 0; i < root -> numChildren; i++) {
        maxdepth = fmax(maxdepth,maxDepth(root -> children[i]));

    }
    return 1 + maxdepth;

}

那么思路来了,首先我们先判断,如果root是空的话 也就是抵达了最下面,那么直接返回0
接下来,如果root的孩子节点的数量是0的话 说明下面没有分支了,那么返回1
接下来先确定一个最大深度的变量
接下来写一个for循环。初始化是1,然后接下来i种植的条件是numChildren的数量,然后i++
接下来可以看到maxdepth的数量是随着maxdepth和maxDepth函数的传入值进行的比较。谁大取谁,
最后返回maxdepth+1是因为最大的值是numchildren,所以说要加一个最上面的头节点
m3br5rdd.png

以上就是简单的思路,总之来说用的是递归和二叉树的简单思路

1

评论 (0)

取消