链接:https://leetcode-cn.com/problems/n-ary-tree-preorder-traversal/
给定一个 N 叉树,返回其节点值的前序遍历。
例如,给定一个 3叉树 :
返回其前序遍历: [1,3,5,6,2,4]。
说明: 递归法很简单,你可以使用迭代法完成此题吗?
对于树的每一层通过倒序存进栈的方式来使得每一层最左边的节点最先出栈。
同时要多注意判空
/*
// 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> preorder(Node* root) {
stack <Node*> s;
vector<int> ans;
if(root)
s.push(root);
while(!s.empty())
{
Node* temp = s.top();
ans.push_back(temp->val);
s.pop();
int len = temp->children.size();
for(int i = len -1; i >= 0; i--)
if(temp->children[i])
s.push(temp->children[i]);
}
return ans;
}
};