binary-tree-postorder-traversal
/** * Definition for binary tree * 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> res; if(!root) return res; stack<TreeNode*> s; TreeNode* curr = root; TreeNode* previsited = NULL; while(curr || !s.empty()){ while(curr){ s.push(curr); curr = curr->left; } curr = s.top(); if(curr->right == NULL|| curr->right == previsited){ res.push_back(curr->val); previsited = curr; s.pop(); curr = NULL; } else curr = curr->right; } return res; } };