zoukankan      html  css  js  c++  java
  • 二叉树非递归后序遍历

    二叉树非递归后序遍历

        vector<int> post_order(TreeNode* root)
        {
            stack<TreeNode*> stack;
            vector<int> res;
            
            if(root == nullptr)
                return res;
            TreeNode* prev = nullptr;    
            TreeNode* curt = nullptr;
            
            stack.push(root);
            while(!stack.empty())
            {
                curt = stack.top();
                if(prev == nullptr || prev->left == curt || prev->right == curt)
                {
                    if(curt->left != nullptr)
                        stack.push(curt->left);
                    else if(curt->right != nullptr)
                        stack.push(curt->right);
                    else{                     
                         stack.pop();
                          res.push_back(curt->val);
                    }
                } else if(curt->left == prev)
                {
                    if(curt->right != nullptr)
                        stack.push(curt->right);
                    else{                     
                         stack.pop();
                          res.push_back(curt->val);
                    }
                }else {
                    res.push_back(curt->val);
                    stack.pop();
                }
                prev = curt;
            }
            
            return res;
        }
        
    

      

  • 相关阅读:
    17_8_30 Mybatis 入门
    17_8_29 mysql 导入导出备份还原
    [iOS基础控件
    [iOS基础控件
    [iOS基础控件
    [MAC OSX
    [iOS基础控件
    [iOS基础控件
    [iOS基础控件
    [iOS基础控件
  • 原文地址:https://www.cnblogs.com/ya-cpp/p/11195728.html
Copyright © 2011-2022 走看看