559. N 叉树的最大深度

给定一个 N 叉树,找到其最大深度。

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

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

示例 1:

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

输出:3

  • 示例 2:

输入: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

提示:

  • 树的深度不会超过 1000 。
  • 树的节点数目位于 [0, 104] 之间。

解题思路

使用递归,每个递归函数返回的是以输入参数root为根节点的子树,所具有的最大深度。每次递归计算所有的子节点,得出子节点中的最大深度,然后加上当前节点的深度一,返回给上层调用。

代码

/*
// Definition for a Node.
class Node {
public:int val;vector<Node*> children;Node() {}Node(int _val) {val = _val;}Node(int _val, vector<Node*> _children) {val = _val;children = _children;}
};
*/class Solution {public:int maxDepth(Node* root) {if (root== nullptr) return 0;int res(0);for (auto c:root->children)res=max(maxDepth(c),res);return res+1;}
};

时间复杂度:O(n)O(n)O(n),其中 n 为 N 叉树节点的个数。每个节点在递归中只被遍历一次。

空间复杂度:O(height)O(\textit{height})O(height),其中$ \textit{height}$ 表示 N 叉树的高度。递归函数需要栈空间,而栈空间取决于递归的深度,因此空间复杂度等价于 N 叉树的高度。

解题思路

利用队列实现对N叉树的层序遍历,并且记录下访问到的最大的层数,就是最大深度

代码

/*
// Definition for a Node.
class Node {
public:int val;vector<Node*> children;Node() {}Node(int _val) {val = _val;}Node(int _val, vector<Node*> _children) {val = _val;children = _children;}
};
*/class Solution {public:int maxDepth(Node *root) {if (root == nullptr) return 0;int res(0);queue<Node *> q;q.push(root);while (!q.empty()) {int s = q.size();for (int i = 0; i < s; ++i) {Node *cur = q.front();q.pop();for (auto c:cur->children) {if (c != nullptr)q.push(c);}}res++;}return res;}
};

559. N 叉树的最大深度相关推荐

  1. LeetCode Algorithm 559. N 叉树的最大深度

    559. N 叉树的最大深度 Ideas 树问题一般都是用递归解决,树的深度问题就是一个深度优先搜索问题,求当前节点的所有子树的深度然后加上1,就是以当前节点为根的树高度. Code Python c ...

  2. 559.N叉树的最大深度

    给定一个 N 叉树,找到其最大深度. 最大深度是指从根节点到最远叶子节点的最长路径上的节点总数. 例如,给定一个 3叉树 : 我们应返回其最大深度,3. 说明: 树的深度不会超过 1000. 树的节点 ...

  3. 【解题报告】Leecode 559. N 叉树的最大深度——Leecode每日一题

    今天是坚持每日一题打卡的第二十二天 题目链接:https://leetcode-cn.com/problems/maximum-depth-of-n-ary-tree/submissions/ 题解汇 ...

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

    文章目录 1. 题目 2. 解题 2.1 递归 2.2 按层queue遍历 1. 题目 给定一个 N 叉树,找到其最大深度. 最大深度是指从根节点到最远叶子节点的最长路径上的节点总数. 2. 解题 2 ...

  5. leetcode 559 N叉树的最大深度

    https://leetcode-cn.com/problems/maximum-depth-of-n-ary-tree/ 题目 给定一个 N 叉树,找到其最大深度. 最大深度是指从根节点到最远叶子节 ...

  6. leetcode 559. N 叉树的最大深度(Java版,N叉树的深度优先搜索)

    题目 https://leetcode-cn.com/problems/maximum-depth-of-n-ary-tree/ 题解 思路是 N 叉树的遍历(深度优先搜索) /* // Defini ...

  7. 力扣559. N 叉树的最大深度(JavaScript)

    //层序遍历 var maxDepth = function(root) {if(root===null){return 0}let count=0let q=[root]while(q.length ...

  8. LeetCode 二叉树、N叉树的最大深度与最小深度(递归解)

    目录 104. 二叉树的最大深度 559. N叉树的最大深度 111. 二叉树的最小深度 之前的笔记中,已经用层序遍历解决过这个问题了 现在试着用深度的解法去求解 104. 二叉树的最大深度 给定一个 ...

  9. ★LeetCode(559)——N叉树的最大深度(JavaScript)

    给定一个 N 叉树,找到其最大深度. 最大深度是指从根节点到最远叶子节点的最长路径上的节点总数. 例如,给定一个 3叉树: 我们应返回其最大深度,3. 说明: 树的深度不会超过 1000. 树的节点总 ...

最新文章

  1. 利用一个样本估计类别数据分布,9行代码提高少样本学习泛化能力
  2. ORA-39095: Dump file space has been exhausted: Unable to allocate 8192 bytes
  3. 不用“背”单词,1个方法牢记7000单词:我是如何做到的?
  4. Unity 制作RPG小地图
  5. 调整jvm参数_JVM源码分析之MetaspaceSize和MaxMetaspaceSize的区别
  6. 我的一些关于商业计划书的经验
  7. 南阳计算机职称考试报名时间2015,2015河南公务员考试14日起开始报名 南阳市计划招录590人...
  8. CentOS 7 部署RabbitMQ 服务
  9. 第四次作业—四则运算
  10. python 绘制椭圆
  11. Java8新特性之空指针异常的克星Optional类
  12. python语言画四叶草的程序_python绘图四叶草_后端开发
  13. FastQC 与 质控
  14. APP爬虫开发环境准备
  15. 2022-02-16 工作记录--Swiper-实现跑马灯效果:鼠标经过时停止滑动,鼠标离开后继续滑动
  16. python中使用大写字母来分割字符串
  17. 服务器开启防火墙后无法登录系统,客户端连不上,服务器防火墙服务启动不了...
  18. 模拟退火算法——仿真篇
  19. 浅谈JMS--(JMS 的简介)
  20. 2020年蓝桥杯省赛题目——既约分数

热门文章

  1. HYSBZ - 2157树链剖分
  2. LInux下du, df, top, free, pstack, su, sudo, adduser, password命令
  3. java线程池使用实战,太牛了!
  4. Java-进阶:Java-File--IO—1
  5. 萌新向Python数据分析及数据挖掘 第三章 机器学习常用算法 第四节 PCA与梯度上升 (上)理解篇...
  6. mysql-视图、事物等
  7. 一个经典实例理解继承与多态原理与优点(附源码)---面向对象继承和多态性理解得不够深刻的同学请进...
  8. 所有程序员都应该遵守的11条规则
  9. 【现代程序设计】【homework-07】
  10. Oracle 安装 网络配置 警告