Leetcode255-验证前序遍历序列二叉搜索树

class Solution {
    public boolean verifyPreorder(int[] preorder) {
        LinkedList<Integer> stack=new LinkedList<>();

        int preElem=Integer.MIN_VALUE;
        for(int i=0;i<preorder.length;i++){
            //右子树元素必须要大于递减栈被peek访问的元素,否则就不是二叉搜索树
            if(preorder[i]<preElem){
                return false;
            }
            while(!stack.isEmpty() && stack.peek()<preorder[i]){
                //数组元素大于单调栈的元素了,表示往右子树走了,记录下上个根节点
                preElem=stack.removeFirst();
            }
            stack.addFirst(preorder[i]);
        }

        return true;
    }
}
posted @ 2022-04-27 13:08  fao99  阅读(56)  评论(0)    收藏  举报