美文网首页LeetCode
559. N叉树的最大深度

559. N叉树的最大深度

作者: 闭门造折 | 来源:发表于2018-11-18 16:17 被阅读49次

给定一个 N 叉树,找到其最大深度。
最大深度是指从根节点到最远叶子节点的最长路径上的节点总数。

例如

给定一个 3叉树 :

    1
   /|\
  3 2 4
 / \
5  6

我们应返回其最大深度,3。

说明:

树的深度不会超过 1000。
树的节点总不会超过 5000。

思路1

使用递归,找到当前节点所有孩子节点中最深的一支,+1即为当前节点深度

性能分析

时间复杂度为O(N),空间复杂度最优为O(LogN),最差为O(N)(全部为单支)

具体代码

int max(int a, int b){ // 辅助函数,用来返回较大值
    return a > b ? a : b;
}
int maxDepth(Node* root) {
    if(root == NULL){ //空节点过滤
        return 0;
    }
    int res = 0;
    for(int i = 0; i < root->children.size(); i++){ // 遍历每个子节点
        res = max(res, maxDepth(root->children[i])); // 选择最大子树深度
    }
    return 1 + res; // 最大子树深度 + 1 = 当前树深度
}

思路2

使用迭代,一层一层的遍历,每次把某一层的节点全部找出来,直到找不到下一层为止
存放的数据结构可以用队列,先进先出,后方插入前方弹出

性能分析

时间复杂度为O(N),空间复杂度为O(N)

具体代码

queue<Node*> q;
int maxDepth(Node* root) {
    if(root == NULL) return 0; // 空节点筛除
    
    int res = 0;
    q.push(root);
    while(q.size()){ // 当该层还有节点
        for(int i = q.size(); i > 0; i--){ // 遍历该层所有节点
            Node* t = q.front(); // 获得队列头元素
            q.pop();             // 弹出队列头元素
            // 向队列尾插入队列头元素所有子节点
            for(int j = 0; j < t->children.size(); j++){
                q.push(t->children[j]);
            }
        }
        // 层数++
        res++;
    }
    
    return res;
}

相关文章

  • 559. N叉树的最大深度

    559. N叉树的最大深度

  • 559. N叉树的最大深度

    给定一个 N 叉树,找到其最大深度。最大深度是指从根节点到最远叶子节点的最长路径上的节点总数。 例如 给定一个 3...

  • LeetCode 559. N 叉树的最大深度

    题目 给定一个 N 叉树,找到其最大深度。最大深度是指从根节点到最远叶子节点的最长路径上的节点总数。N 叉树输入按...

  • 刷题--leetcode559.N叉树的最大深度

    题目 N叉树的最大深度 给定一个 N 叉树,找到其最大深度。 最大深度是指从根节点到最远叶子节点的最长路径上的节点...

  • LeetCode 第559题:N叉树的最大深度

    1、前言 2、思路 此题可以用 DFS 跟 BFS 来做。N 叉树的最大深度跟二叉树的最大深度求解很类似,代码完全...

  • 2021-11-21 559. N 叉树的最大深度

    这个题本质上和二叉树的最大深度差不多,本来想用深度优先解决,可是写着写着成了回溯。

  • leetcode-559. N叉树的最大深度(OC)

    N叉树的最大深度 地址:https://leetcode-cn.com/problems/maximum-dept...

  • N叉树的最大深度

    题目: 给定一个 N 叉树,找到其最大深度。最大深度是指从根节点到最远叶子节点的最长路径上的节点总数。 示例: 我...

  • N叉树的最大深度

    给定一个 N 叉树,找到其最大深度。 最大深度是指从根节点到最远叶子节点的最长路径上的节点总数。 例如,给定一个 ...

  • N叉树的最大深度

    题目: 题目的理解: 链表中的每一个节点的children是一个数组,保存着多个节点。将同一级的节点保存到一个数组...

网友评论

    本文标题:559. N叉树的最大深度

    本文链接:https://www.haomeiwen.com/subject/gmsgfqtx.html