题解:
题解:
class Solution {
public:
//解法1:迭代版
vector<int> postorder_1(Node* root) {
if(nullptr==root)return {};
vector<int> result;
stack<Node*> record;
record.push(root);
while(!record.empty())
{
Node* node=record.top();record.pop();
result.insert(result.begin(),node->val);//将每一层的节点值从右到左地插入到result的最前面,最后得到的就是后序遍历的结果
for(auto child:node->children)
record.push(child);
}
return result;
}
private:
vector<int> result;
public:
//解法2:递归版
vector<int> postorder_2(Node* root)
{
if(root!=nullptr)
{
result.insert(result.begin(),root->val);
for(int i=root->children.size()-1;i>=0;--i)
postorder((root->children)[i]);
}
return result;
}
};