题目概述
原题链接
给定一个 N 叉树,返回其节点值的前序遍历 ,N叉树节点定义如下:
class Node {
public:
int val;
vector<Node*> children;
Node() {
}
Node(int _val) {
val = _val;
}
Node(int _val, vector<Node*> _children) {
val = _val;
children = _children;
}
};
思考过程
递归法
树的遍历问题基本可以由递归实现,递归的实现需要考虑三点:
- 递归终止条件
- 递归的返回值
- 每一次递归需要处理的事
那么回到N叉树遍历,相比于二叉树,无非是根节点的个数由左右孩子变成了很多孩子,那么在N叉树遍历时,只需要考虑如何去除N个孩子即可,从Node定义可知,N个子孩子存储在一个vector
数组中,那么主需要利用一个for循环
即可取出N个孩子,代码如下:
void dfs(Node* root, vector<int>& vt)