题目描述:
思路:和二叉树的深度一样,只不过换成了n叉树。左右孩子换成了一个孩子列表。
题目给的结点定义
import java.util.List;
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;
}
}
解决:
import java.util.LinkedList;
import java.util.List;
class Solution {
public int maxDepth(Node root) {
if (root==null) return 0;
if (root.children.isEmpty()) return 1;
List height=new LinkedList();
int maxhei=0;
int hei=0;
for (int i=0;i<root.children.size();i++){
hei=maxDepth(root.children.get(i));
height.add(hei);
maxhei=hei>maxhei?hei:maxhei;
}
return maxhei+1;
}
}
此外 还有迭代和栈来解决的方法。
附上官方迭代+栈的解法。
import javafx.util.Pair;
import java.lang.Math;
class Solution {
public int maxDepth(Node root) {
Queue<Pair<Node, Integer>> stack = new LinkedList<>();
if (root != null) {
stack.add(new Pair(root, 1));
}
int depth = 0;
while (!stack.isEmpty()) {
Pair<Node, Integer> current = stack.poll();
root = current.getKey();
int current_depth = current.getValue();
if (root != null) {
depth = Math.max(depth, current_depth);
for (Node c : root.children) {
stack.add(new Pair(c, current_depth + 1));
}
}
}
return depth;
}
};