题目:
给定一个 N 叉树,找到其最大深度。
最大深度是指从根节点到最远叶子节点的最长路径上的节点总数。
N 叉树输入按层序遍历序列化表示,每组子节点由空值分隔(请参见示例)。
/*
// 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 depth(Node* cur)
// {
// /* // ************错误的!!!!!!!!*********
// // if( cur == nullptr)
// // {
// // return 0;
// // }
// // vector<int> res;
// // for(int i=0; i<cur->children.size(); i++)
// // {
// // res.push_back(depth(cur->children[i]));
// // }
// // // ****************** max 没有迭代器的用法,只能比较两个数
// // return (max(res.begin(),res.end())+1); */
// if( cur == nullptr)
// {
// return 0;
// }
// int maxDepth=0;
// for(int i=0; i<cur->children.size(); i++)
// {
// maxDepth = max(maxDepth,depth(cur->children[i]));
// }
// // max 没有迭代器的用法,只能比较两个数
// return maxDepth+1;
// }
// int maxDepth(Node* root) {
// return depth(root);
int maxDepth(Node* root)
{
// 注意这里的节点 是Node 不是TreeNode 这点写错了
queue<Node*> que;
if(root != nullptr) que.push(root);
int depth = 0;
while(!que.empty())
{
int size = que.size();
for(int i=0; i<size; i++)
{
Node* node = que.front();
que.pop();
for(int j=0; j<node->children.size(); j++)
{
que.push(node->children[j]);
}
}
depth++;
}
return depth;
}
};