Leetcode 559. Maximum Depth of N-ary Tree
题目链接: Maximum Depth of N-ary Tree
难度:Easy
题目大意:
求N叉树的最大深度。
思路:
思路1(DFS):
利用递归,如果根节点非空,N叉树的最大深度等于所以子节点的最大深度的最大值再加一。但这种方法写出来的代码最后超时了。
思路2(BFS):
利用迭代,每次把一层的节点全部出队,再把下一层的节点全部入队,统计有多少层。
代码
思路1代码
/*
// Definition for a Node.
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;
}
};
*/
class Solution {
public int maxDepth(Node root) {
if(root==null){
return 0;
}
else{
int childDepth=0;
for(Node n:root.children){
if(maxDepth(n)>childDepth){
childDepth=maxDepth(n);
}
}
return childDepth+1;
}
}
}
思路2代码
/*
// Definition for a Node.
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;
}
};
*/
class Solution {
public int maxDepth(Node root) {
if(root==null){
return 0;
}
Queue<Node> queue=new LinkedList<>();
queue.offer(root);
int depth=0;
while(!queue.isEmpty()){
int n=queue.size();//这一层的节点个数
for(int i=0;i<n;i++){//把这一层的节点全部出队,下一层的节点全部入队
Node node=queue.poll();
for(Node child:node.children){
queue.offer(child);
}
}
depth++;
}
return depth;
}
}