问题描述:给定一个N叉树,找到其最大深度,最大深度是指从根节点到最远叶子节点的最长路径上的结点总数,N叉树输入按层序遍历序列化表示,每组子节点由控制分割。
DFS求解:在全局定义一个level层级,用以更新遍历到的最大层级。
int maxLevel=Integer.MIN_VALUE;
public void level(Node root,int level)
{
if(root==null){return;}
else
{
mavLevel=Math.max(level,maxLevel);
for(int i=0;i<root.children.size();i++)
{
level(root.children[i],level+1);
}
}
}
public int MaxLevel(Node root)
{
level(root,1);
???????return maxLevel;
}
bfs求解:从国一层一层的遍历,并记录最大层数。
public int maxLevel(Node root)
{
queue<Node>queue=new LinkedList<>();
queue.add(root);
int MaxLevel=0;
while(!queue.isEmpty())
{
int queueSize=queue.size();
for(int i=0;i<queueSize;i++)
{
Node tempNode=queue.poll();
for(int i=0;i<tempNode.children.size();i++)
{
if(tempNode.children[i]!=null){queue.add(tempNode.children[i]);}
}
}
MaxLevel++;
}
???????return MaxLevel;
}