1、描述
给定一个 N 叉树,找到其最大深度。
最大深度是指从根节点到最远叶子节点的最长路径上的节点总数。
2、关键字
N叉树,深度
3、思路
和之前的二叉树的最大深度一样,层序遍历BFS
4、notes
就是按照上一篇文章那样,BFS2层循环,3个部分
N叉树,就是把左右孩纸变成了子树的序列,然后用for语句完成下一层队列的初始化工作就好了。
复习:for语句使用;
5、复杂度
时间O(N):n是节点的个数,遍历所有的节点
空间:O(N):n是节点的个数,当只有一个根节点时候是 O(N),当时有两层时,是O(n-1),所以是O(N)
6、code
/*
// Definition for a Node.
class Node {
public:
int val;
vector<Node*> children;
Node() {}
Node(int _val) {
val = _val;
}
Node(int _val, vector<Node*> _children) {
val = _val;
children = _children;
}
};
*/
class Solution {
public:
int maxDepth(Node* root) {
int res=1;
if(!root) return 0;
queue<Node*>que;
que.push(root);
while(!que.empty()){
int longth=que.size();
while(longth--){
auto tem=que.front();
que.pop();
for(auto ch :tem->children)
{
que.push(ch);
}
}
if(!que.empty())
res++;
}
return res;
}
};