285. Inorder Successor in BST

Posted 我的名字叫周周

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了285. Inorder Successor in BST相关的知识,希望对你有一定的参考价值。

    /*
     * 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的主要内容,如果未能解决你的问题,请参考以下文章

285. Inorder Successor in BST

285. Inorder Successor in BST - Medium

[LC] 285. Inorder Successor in BST

LeetCode 285. Inorder Successor in BST

[LeetCode] 285. Inorder Successor in BST

[LeetCode] 285. Inorder Successor in BST 二叉搜索树中的中序后继节点