一.题目描述
给定一个 N 叉树,返回其节点值的前序遍历。
例如,给定一个 3叉树 :
返回其前序遍历: [1,3,5,6,2,4]。
二.问题分析
题目中给出了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:
vector<int> num;
vector<int> preorder(Node* root) {
if(root==NULL) return num; //特例
num.emplace_back(root->val); //加入元素
//前序遍历
for(Node* t : root->children)
{
preorder(t);
}
return num;
}
};