码迷,mamicode.com
首页 > 其他好文 > 详细

285. Inorder Successor in BST

时间:2016-06-28 12:33:11      阅读:118      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!