再看这道题之前,先来一道类似的简单题。

题目:求二叉树的最大深度

给定一个二叉树,找出其最大深度。

二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。

说明: 叶子节点是指没有子节点的节点。

示例:
给定二叉树 [3,9,20,null,null,15,7],

3
/ \
9 20
/ \
15 7
返回它的最大深度 3 。

来源:leetcode
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

这道题思路很简单,因为是二叉树,有两个子节点,我们可以用递归依次求出左子树的深度和右子树的深度,然后两个进行比较,取最大的,得出的记过+1,因为还有根节点的那层。所以代码就好写了。

class Solution {
public int maxDepth(TreeNode root) {
if(root == null){
return 0;
}
return Math.max(maxDepth(root.left),maxDepth(root.right))+1;
}
}

再来看这道题,这道题是上面那道题的变形,由二叉树变成了N叉树。

题目

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

最大深度是指从根节点到最远叶子节点的最长路径上的节点总数
说明:
树的深度不会超过 1000。
树的节点总不会超过 5000。
看他给出的N叉树的定义。

class Node {
public int val;
public List<Node> children;//孩子节点是个集合 public Node() {} public Node(int _val) {
val = _val;
} public Node(int _val, List<Node> _children) {
val = _val;
children = _children;
}
};

要想求出N叉树的最大深度,就是求出N叉树的子节点中最大深度+1,那么求N叉树子节点有可变为求出当前节点的所有子节点中最大的深度。因此这道题可以通过DFS深度优先遍历来解决。

class Solution {
public int maxDepth(Node root) {
if(root==null){
return 0;
}
if(root.children==null){
return 1;
}
int res = 0;
//遍历当前节点下面的所有子节点,求出子节点中最大深度
for(int i=0;i<root.children.size();i++){
res = Math.max(res,maxDepth(root.children.get(i)));
}
// 返回子节点中最大深度+1
return res+1;
}
}

唉,以后还得多刷刷有关树的题目。

“旅途“永无止境!

N叉树的最大深度-DFS的更多相关文章

  1. Leetcode之深度优先搜索(DFS)专题-559. N叉树的最大深度(Maximum Depth of N-ary Tree)

    Leetcode之深度优先搜索(DFS)专题-559. N叉树的最大深度(Maximum Depth of N-ary Tree) 深度优先搜索的解题详细介绍,点击 给定一个 N 叉树,找到其最大深度 ...

  2. [LeetCode] Maximum Depth of N-ary Tree N叉树的最大深度

    Given a n-ary tree, find its maximum depth. The maximum depth is the number of nodes along the longe ...

  3. LeetCode:N叉树的最大深度【559】

    LeetCode:N叉树的最大深度[559] 题目描述 给定一个N叉树,找到其最大深度. 最大深度是指从根节点到最远叶子节点的最长路径上的节点总数. 例如,给定一个 3叉树 : 我们应返回其最大深度, ...

  4. Java实现 LeetCode 559 N叉树的最大深度(遍历树,其实和便利二叉树一样,代码简短(●ˇ∀ˇ●))

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

  5. Leetcode:559. N叉树的最大深度

    Leetcode:559. N叉树的最大深度 Leetcode:559. N叉树的最大深度 Talk is cheap . Show me the code . /* // Definition fo ...

  6. 选课 树形DP+多叉树转二叉树+dfs求解答案

    问题 A: 选课 时间限制: 1 Sec  内存限制: 128 MB 题目描述 大 学里实行学分.每门课程都有一定的学分,学生只要选修了这门课并考核通过就能获得相应的学分.学生最后的学分是他选修的各门 ...

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

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

  8. CF 115 A 【求树最大深度/DFS/并查集】

    CF A. Party time limit per test3 seconds memory limit per test256 megabytes inputstandard input outp ...

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

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

随机推荐

  1. BJWC2011 禁忌

    题目链接 题解 多模式匹配首先建 AC 自动机,看到 \(len \le 10^9\) 想到矩阵乘法优化. 朴素 DP 关于分割的最大值,可以贪心,只要走到一个能匹配串的点立刻返回根继续匹配就行,一定 ...

  2. java实现TCP通信(带界面)

    服务端: package NetWork; import java.io.*;import java.net.*;import java.awt.event.*;import java.awt.*;i ...

  3. 数据结构与算法——循环链表的算法实现(Joseph 问题)

    Joseph 问题: 如果有10 个人,按编号顺序1,2,...,10 顺时针方向围成一圈.从1 号开始顺时针方向1,2,...,9 报数,凡报数9 者出列(显然,第一个出圈为编号9 者). 最后一个 ...

  4. 微服务开发的最大痛点-分布式事务SEATA入门简介

    前言 在微服务开发中,存在诸多的开发痛点,例如分布式事务.全链路跟踪.限流降级和服务平滑上下线等.而在这其中,分布式事务是最让开发者头痛的.那分布式事务是什么呢? 分布式事务就是指事务的参与者.支持事 ...

  5. virtualbox sharefolder mount fail

    ubuntu 14.04.1 LTS 64bit 安装完GuestAdditions后,在终端输入 sudo mount -t vboxsf sharename /mnt/share 提示错误:mou ...

  6. Python将文件夹下的文件名写入excel方便统计

    如题,贴代码: 1 ''' 2 #python将某文件夹下的文件名存储到excel中 3 ''' 4 5 #导入所需模块 6 import os 7 import xlwt 8 9 #定义要处理的文件 ...

  7. vue 动态注册路由 require.context

    需求场景: 在日常的功能练习和调试过程中,需要一个demo项目进行功能测试,由于频繁.vue页面的同时,又要再router.js文件里面注册路由,感觉有点无聊和枯燥.基于此出发点,考虑能否自动读取文件 ...

  8. 前端可视化开发--liveload

    在前端开发中,我们会频繁的修改html.css.js,然后刷新页面,开效果,再调整,再刷新,不知不觉会浪费掉我们很多时间.有没有什么方法,我在编辑器里面改了代码以后,只要保存,浏览器就能实时刷新.经过 ...

  9. wildfly 21中应用程序的部署

    目录 简介 Managed Domain中的部署 管理展开的部署文件 standalone模式下的部署 standalone模式下的自动部署 Marker Files 受管理的和不受管理的部署 部署覆 ...

  10. Could not open ServletContext resource [/WEB-INF/applicationContext.xml] 解决办法

    Spring官方文档中规定,如果在上下文中没有指定contextConfigLoction配置文件的位置,则会默认去WEB-INF中去寻找对应的配置文件. 理论上classpath的默认路径是WEB- ...