spider68

Postorder Traversal (Iterative)

Mar 30th, 2021
855
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.98 KB | None | 0 0
  1. //--------using one stack--------
  2.  
  3. vector<int> postOrder(Node* node) {
  4.     if(!node)return {};
  5.     stack<Node*>s;
  6.     vector<int>v;
  7.     while(!s.empty()||node){
  8.         if(node){
  9.             v.push_back(node->data);
  10.             s.push(node);
  11.             node=node->right;
  12.         }
  13.         else{
  14.             node=s.top()->left;
  15.             s.pop();
  16.         }
  17.     }
  18.     reverse(v.begin(),v.end());
  19.     return v;
  20. }
  21.  
  22.  
  23. //--------using two stack--------
  24. class Solution {
  25. public:
  26.     vector<int> postorderTraversal(TreeNode* root) {
  27.         if(!root)return {};
  28.         stack<TreeNode*>s1,s2;
  29.         vector<int>v;
  30.         s2.push(root);
  31.         while(!s2.empty()){
  32.             TreeNode*ll=s2.top();
  33.             s2.pop();
  34.             s1.push(ll);
  35.             if(ll->left)s2.push(ll->left);
  36.             if(ll->right)s2.push(ll->right);
  37.         }
  38.         while(!s1.empty()){
  39.             v.push_back(s1.top()->val);
  40.             s1.pop();
  41.         }
  42.         return v;
  43.     }
  44. };
Advertisement
Add Comment
Please, Sign In to add comment