#include <iostream>
#include <string>
#include<vector>
#include<string>
using namespace std;
struct TreeNode {
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int x) :val(x), left(nullptr), right(nullptr) {}
TreeNode() :val(), left(nullptr), right(nullptr) {}
TreeNode(int x, TreeNode* left, TreeNode* right) : val(x), left(left), right(right) {}
};
void preorder(TreeNode* root, vector<int>& res) {
if (root == nullptr) {
return;
}
res.push_back(root->val);
preorder(root->left, res);
preorder(root->right, res);
}
void postorder(TreeNode* root,vector<int>& res) {
if (root == nullptr) {
return;
}
postorder(root->left, res);
postorder(root->right, res);
res.push_back(root->val);
}
void inorder(TreeNode* root, vector<int>& res) {
if (root == nullptr) {
return;
}
inorder(root->left, res);
res.push_back(root->val);
inorder(root->right, res);
}
int main()
{
using namespace std;
TreeNode root_2 = { 3 };
TreeNode root_1 = { 2,&root_2,nullptr };
TreeNode root = { 1,nullptr,&root_1 };
vector<int> resour;
postorder(&root,resour);
for (vector<int>::iterator it = resour.begin(); it != resour.end(); it++)
{
cout << *it << "->";
}
return 0;
}