class Solution {
public:
vector<int> inorderTraversal(TreeNode* root) {
stack<TreeNode*> st;
vector<int> res;
if(root == nullptr)
{
return res;
}
TreeNode* node = root;
while(!st.empty() || node != nullptr){
while(node != nullptr){
st.push(node);
nnode= node->left;
}
node = st.top();
st.pop();
res.push_back(node->val);
node = node->right;
}
return res;
}
};
class Solution {
public:
vector<int> postorderTraversal(TreeNode* root) {
stack<TreeNode*> st;
vector<int> res;
if (root == NULL) return res;
TreeNode* node = root;
TreeNode *prev = nullptr;
while(!st.empty() || node != nullptr){
while(node!=nullptr){
st.push(node);
node = node ->left;
}
node = st.top();
st.pop();
if(node ->right == nullptr || node -> right == prev){
res.push_back(node->val);
prev = node;
node = nullptr;
}else{
st.push(node);
node = node ->right;
}
}
return res;
}
};