剑指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));

    }

}

猜你喜欢

转载自blog.csdn.net/ma451152002/article/details/83186265