题目链接:https://leetcode-cn.com/problems/maximum-depth-of-n-ary-tree/
题目如下:
解法一:迭代
/*
// 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 depth=0;
if(root==NULL) return depth;
queue<Node*> que;
que.push(root);
while(!que.empty()){
int size=que.size();
depth++;
while(size--){
Node* tmp=que.front();
que.pop();
for(auto e:tmp->children){
if(e) que.push(e);
}
}
}
return depth;
}
};
解法二:递归
/*
// 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) {
return dfs(root);
}
int dfs(Node* root){
if(root==NULL) return 0;
int depth=0;
for(auto e:root->children){
depth=max(depth,dfs(e));
}
return depth+1;
}
};