zoukankan      html  css  js  c++  java
  • 二叉树的先序遍历-非递归实现

    class Solution {
    public:
        void preorderTraversal(TreeNode* root) {
            //1.先逐个访问左路结点,并将其入栈
            //2.再访问栈顶元素的右子树
            
            stack<TreeNode*> helper;
            TreeNode* cur=root;
            //只有cur为空,并且栈空,说明所有元素访问完
            while(cur || !helper.empty())
            {
               while(cur){              //  左路结点入栈
                    cout << cur->val;
                    helper.push(cur);
                    cur=cur->left;
               }
                //来到这左路结点已入栈
                
                TreeNode* right=helper.top()->right;//栈顶的右子树
                helper.pop();//弹出栈顶
                cur=right;//将右子树赋给cur上去继续判断(cur是当前结点的右子树,它是可能为空的,当它为空时,继续取下一个栈顶的右子树,否则要将其赋给cur,再次
                //当做关键结点,即左路结点入栈,取栈顶,访问右子树...)
            }
            return;
        }
    };
  • 相关阅读:
    单例模式
    pandas to_html
    restful
    numpy版本查看以及升降
    视频下载
    转载:caffe中的Reshape层
    caffe编译报错解决
    python 版Faster Rcnn
    转载:动态规划以及路径记录
    TensorFlow设置GPU占用量
  • 原文地址:https://www.cnblogs.com/simplepaul/p/12934351.html
Copyright © 2011-2022 走看看