首页 > 其他 > 详细

285. Inorder Successor in BST

时间:2016-06-28 12:32:12      阅读:216      评论:0      收藏:0      [点我收藏+]
    /*
     * 285. Inorder Successor in BST 
     * 2016-6-27 By Mingyang
     * 网上有些代码太复杂,我的最简单明了,无非就是一个dfs,用stack来做就好了,遇到p以后
     * 用一个flag mark一下,接下来的话就可以下一个inorder的时候return就好了
     * 注意:判断的是!stack.empty()而不是另外一种的方法
     */
     public TreeNode inorderSuccessor(TreeNode root, TreeNode p) {
            if(root==null)
              return null;
            Stack<TreeNode> stack=new Stack<TreeNode>();
            TreeNode s=root;
            boolean findOrNot=false;
            while(!stack.empty()||s!=null){
                if(s!=null){
                    stack.push(s);
                    s=s.left;
                }else{
                    TreeNode temp=stack.pop();
                    if(findOrNot){
                        return temp;
                    }else{
                        if(temp==p)
                          findOrNot=true;
                    }
                   s=temp.right;
                }
            }
            return null;
        }

 

285. Inorder Successor in BST

原文:http://www.cnblogs.com/zmyvszk/p/5622958.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!