/**
 * struct TreeNode {
 *	int val;
 *	struct TreeNode *left;
 *	struct TreeNode *right;
 *	TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
 * };
 */
class Solution {
public:
   void postorder(vector<int> &res, TreeNode *root)
   {
    if(root == NULL)
    return;
    postorder(res,root->left);
    postorder(res,root->right);
    res.push_back(root->val);
   }
    vector<int> postorderTraversal(TreeNode* root) {
        vector <int> res;
        postorder(res,root);
        return res;
    }
};