题目描述

输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。

分析

找住二叉查找树的特点:左子树<根<=右子树 使用分治思想。

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

贴出代码

public class Solution {
    public boolean VerifySquenceOfBST(int [] sequence) {
        if (sequence.length == 0){
            return false;
        }
        if (sequence.length == 1){
            return true;
        }

        return judge(sequence,0,sequence.length - 1);
    }

    private boolean judge(int[] a, int start, int end){
        if (start >= end){
            return true;
        }
        int i = start;
        while (a[i] < a[end]){
            ++i;
        }
        for (int j = i; j < end; j++){
            if (a[j] < a[end]){
                return false;
            }
        }
        return judge(a,start,i-1) && judge(a, i, end - 1);
    }
}
扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄