N叉树节点定义题目链接:力扣题目链接
难度:简单
给定一个 N 叉树,找到其最大深度。
最大深度是指从根节点到最远叶子节点的最长路径上的节点总数。
N 叉树输入按层序遍历序列化表示,每组子节点由空值分隔(请参见示例)。
示例
输入:root = [1,null,3,2,4,null,5,6]
输出:3
class Node {
public int val;
public List children;
public Node() {}
public Node(int _val) {
val = _val;
}
public Node(int _val, List _children) {
val = _val;
children = _children;
}
}
思路
递归:
如果根节点有 N 个子节点,则这 N 个子节点对应 N个子树。记 N个子树的最大深度中的最大值为 deep,则该 N 叉树的最大深度为 deep+1。
迭代:
广度优先搜索的队列里存放的是当前层的所有节点。每次拓展下一层的时候,不同于广度优先搜索的每次只从队列里拿出一个节点,我们需要将队列里的所有节点都拿出来进行拓展,这样能保证每次拓展完的时候队列里存放的是当前层的所有节点,即我们是一层一层地进行拓展。
class Solution{
public int maxDepth(Node root) {
if (root == null) {
return 0;
}
int deep = 0;
if (root.children != null) {
for (Node child : root.children) {
deep = Math.max(deep, maxDepth(child));
}
}
return deep + 1; // 1为中间根节点
}
}
迭代代码
class Solution{
public int maxDepth(Node root) {
if(root == null){
return 0;
}
Queue queue = new linkedList<>();
queue.offer(root);
int deep = 0;
while(!queue.isEmpty()){
int len = queue.size();
for (int i = 0;i 


