QUESTION
easy
题目描述
给定一个 N
叉树,返回其节点值的前序遍历
例如,给定一个 3
叉树:
说明
递归法很简单,你可以使用迭代法完成此题吗?
SOLUTION
又是这个老问题,迭代用栈解决!
方法一(递归)
vector<int> preorder(Node* root) {
vector<int> res;
helper(root, res);
return res;
}
void helper(Node* node, vector<int> &res){
if(!node) return;
res.push_back(node->val);
for(auto child : node->children){
helper(child, res);
}
}
方法二(迭代)
注意入栈的时候逆序入栈
vector<int> preorder(Node* root) {
vector<int> res;
if(!root) return res;
stack<Node*> s;
s.push(root);
Node* p = NULL;
while(!s.empty()){
p = s.top();
s.pop();
res.push_back(p->val);
for(int i = p->children.size() - 1; i >= 0; i--){
s.push(p->children[i]);
}
}
return res;
}