#include "iostream"
#include "vector"
#include "stack"
using namespace std;
struct TreeNode
{
int val;
TreeNode *left;
TreeNode *right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
class Solution
{
public:
vector<int> postorderTraversal(TreeNode *root)
{
vector<int> ans;
stack<TreeNode *> z;
if(root==NULL)
{
return ans;
}
z.push(root);
TreeNode *node;
// 正序的倒叙就是后序遍历
while(!z.empty())
{
node = z.top();
z.pop();
ans.insert(ans.begin(), node->val);
if(node->left)
{
z.push(node->left);
}
if(node->right)
{
z.push(node->right);
}
}
return ans;
}
};