LeetCode 第559题:N叉树的最大深度
2020-08-10 本文已影响0人
放开那个BUG
1、前言
题目描述
2、思路
此题可以用 DFS 跟 BFS 来做。N 叉树的最大深度跟二叉树的最大深度求解很类似,代码完全可以套过来。
3、代码
DFS:
/*
// 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;
}
List<Node> list = root.children;
if(list == null || list.size() == 0){
return 1;
}
int max = 0;
for(int i = 0; i < list.size(); i++){
Node cur = list.get(i);
max = Math.max(max, maxDepth(cur));
}
return max + 1;
}
}
BFS:
/*
// 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 size = queue.size();
for(int i = 0; i < size; i++){
Node cur = queue.poll();
if(cur.children != null){
for(Node n : cur.children){
queue.offer(n);
}
}
}
depth++;
}
return depth;
}
}