/*
// Definition for a Node.
class Node {
public:
int val;
vector<Node*> children;
Node() {}
Node(int _val, vector<Node*> _children) {
val = _val;
children = _children;
}
};
*/
class Solution {
public:
int maxDepth(Node* root) {
int depth = 0;
Node* firstNode = root;
queue<Node*> que;
if (root) {
que.push(root);
}
while (!que.empty()) {
Node* node = que.front();
que.pop();
if (node == firstNode) {
depth++;
firstNode = NULL;
}
int num = node->children.size();
if (num > 0 && !firstNode) {
firstNode = node->children.at(0);
}
for (vector<Node*>::iterator it = node->children.begin(); it != node->children.end(); it++) {
que.push(*it);
}
}
return depth;
}
};