这篇page是针对leetcode上的559.n叉树的最大深度所写。小尼先简单说明一下这道题的要求,小尼先拉一下题目:
小尼也会给大家介绍两种解决的方法,第一种方法就是递归的方法,但是这里跟普通的二叉树的递归是不同的,二叉树的递归我们只有左右节点,但是这里的n叉树的递归的节点就有n个,所以我们需要遍历一下节点的下面的节点,小尼拉一下代码:
class Solution {
public int maxDepth(Node root) {
if(root == null) return 0;
int result = 0;
List<Node> list = root.children;
for(Node s : list){
int tmp = maxDepth(s);
result = Math.max(tmp,result);
}
return result + 1;
}
}
这里就是运用了一个for循环去遍历root.children,然后我们int类了他的深度,然后哦我没问在再不断的比较tmp和result的数据的大小,最后我们return result+1;
小尼接下来说明一下第二种方法,就是运用迭代的方法进行求解,小尼先拉一下代码:
class Solution { public int maxDepth(Node root) { if(root == null) return 0; int depth = 0; Queue<Node> que = new LinkedList<>(); que.offer(root); while(!que.isEmpty()){ depth++; int len = que.size(); while(len > 0){ Node node = que.poll(); for(int i = 0;i<node.children.size();i++) if(node.children.get(i) != null){ que.offer(node.children.get(i)); } len--; } } return depth; } }