N-ary Tree Postorder Traversal
题目描述:
给定一个 N 叉树,返回其节点值的后序遍历。
例如,给定一个 3叉树 :
解题思路:本题和二叉树的后序遍历一样,后序遍历是左右根,那么反过来就是根右左,所以使用栈,按照根右左的顺序进栈,最后将其反转即可。递归也可以,比较平常。
/*class Solution {
public:
vector<int> postorder(Node* root) {
vector<int>result;
if(!root)return result;
stack<Node*>node;
Node* p;
node.push(root);
while(!node.empty()){
p=node.top();
result.push_back(p->val);
node.pop();
for(int i=0;i<p->children.size();i++){
node.push(p->children[i]);
}
}
reverse(result.begin(),result.end());
return result;
}
};*/
class Solution {
public:
vector<int> postorder(Node* root) {
vector<int>result;
if(!root)return result;
post_order(root,result);
return result;
}
void post_order(Node* root,vector<int>&result){
if(!root)return;
for(int i=0;i<root->children.size();i++){
post_order(root->children[i],result);
}
result.push_back(root->val);
}
};