前言:
N叉樹的前序、和後序遍歷的迭代實現與二叉樹相似。
首先根據遍歷的特性,判斷使用stack還是queue。
N叉樹的後序遍歷,也可由其前序遍歷的結果翻轉後得到,只不過在孩子結點入棧是,是從左到右依次入棧。
一、N叉樹的前序遍歷
題源:https://leetcode-cn.com/problems/n-ary-tree-preorder-traversal/
/*
// Definition for a Node.
class Node {
public:
int val;
vector<Node*> children;
Node() {}
Node(int _val, vector<Node*> _children) {
val = _val;
children = _children;
}
};
*/
class Solution {
public:
vector<int> preorder(Node* root) {
vector<int> res;
stack<Node*> s;
if(root==NULL)
return res;
s.push(root);
while(!s.empty()){
Node* p=s.top();
s.pop();
if(p!=NULL){
res.push_back(p->val);
for(int i=p->children.size()-1;i>