剑指offer-问题24

package offer;

/**
 * offer interview 24
 */
public class Test24 {

    public static boolean verifySequenceOfBST(int[] sequence){
        if (sequence == null || sequence.length <= 0){
            return false;
        }

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

    public static boolean verifySequenceOfBST(int[] sequence,int start,int end){
        if (start >= end){
            return true;
        }

        int index = start;
        while (index < end-1 && sequence[index] < sequence[end]){
            index++;
        }

        int right = index;

        while (index < end -1 && sequence[index] > sequence[end]){
            index++;
        }

        if (index != end - 1) {
            return false;
        }

        index = right;

        return verifySequenceOfBST(sequence,start,index-1)
                && verifySequenceOfBST(sequence,index,end-1);

    }

    public static void main(String[] args){
        //           10
        //         /   \
        //        6     14
        //       /\     /\
        //      4  8  12  16
        int[] data = {4,8,6,12,16,14,10};
        System.out.println(verifySequenceOfBST(data));

        //           5
        //          / \
        //         4   7
        //            /
        //           6
        int[] data2 = {4,6,7,5};
        System.out.println(verifySequenceOfBST(data2));

        //               5
        //              /
        //             4
        //            /
        //           3
        //          /
        //         2
        //        /
        //       1
        int[] data3 = {1,2,3,4,5};
        System.out.println(verifySequenceOfBST(data3));

        // 1
        //  \
        //   2
        //    \
        //     3
        //      \
        //       4
        //        \
        //         5
        int[] data4 = {5,4,3,2,1};
        System.out.println(verifySequenceOfBST(data4));

        int[] data5 = {5};
        System.out.println(verifySequenceOfBST(data5));

        int[] data6 = {7,4,6,5};
        System.out.println(verifySequenceOfBST(data6));

        int[] data7 = {4,6,12,8,16,14,10};
        System.out.println(verifySequenceOfBST(data7));

    }

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值