在讲这道题之前,先来说说二叉树的最大深度如何求。其实我们都知道二叉树的最大深度就是左右孩子中最大的长度加1,所以:
private int deep(TreeNode root) {
if(null==root)
return 0;
//计算root节点的深度
return Math.max(deep(root.right),deep(root.left))+1;
}
这个递归遍历就是从最后的叶子结点一步一步往上反,所以需要返回值。在返回的过程中增加。
现在我们就来说说N叉树的深度,同理,N叉树的深度就是所有孩子中最长的深度加1,在N叉树定义的时候就已经给了孩子数组,所以直接遍历孩子数组就可。从孩子中找到最大的,最后返回最大的加1
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;
int ans=0;
for(Node child:root.children) {
ans=Math.max(ans, maxDepth(child));
}
return ans+1;
}
}