JZ33二叉搜索树的后序遍历序列

题目地址:二叉搜索树的后序遍历序列_牛客题霸_牛客网

题目回顾:

JZ33二叉搜索树的后序遍历序列_第1张图片

JZ33二叉搜索树的后序遍历序列_第2张图片

解题思路:

使用栈

栈的特点是:先进后出。

通读题目后,我们可以得出,二叉搜索树是左子节点小于根节点,右子节点大于根节点。

我们使用一个栈来存储当前的输入数组,也就是说,栈中先出的是根结点,如果数组元素小于栈顶元素,就表明此时它是左子树的根,大于栈顶元素就是右子树的根。

符合要求就是true,否则就是false。

JZ33二叉搜索树的后序遍历序列_第3张图片

整体代码:

​
    public boolean VerifySquenceOfBST(int [] sequence) {
        Stack res = new Stack<>();
        //特殊情况
        if (sequence.length == 0)
            return false;
        int root = Integer.MAX_VALUE;
        
        for (int i = sequence.length-1; i >= 0  ; i--) {
            if (sequence[i] > root)
                return false;
            while (!res.isEmpty() && res.peek() > sequence[i]){
                root = res.pop();
            }
            res.add(sequence[i]);
        }
        return true;
    }

​

你可能感兴趣的:(力扣刷题,java,算法,数据结构)