剑指offer24,二叉搜索树的后续遍历序列(Java实现)

 

import java.util.Vector;

/**
 * 二叉搜索树的后续遍历序列
 * 描述:输入一个数组,判断该数组是不是某二叉搜索树的后序遍历结果。
 * 
 * @author lenovo047
 *
 */
public class test24 {
    
    public static void main(String[] args) {
        int[] a = {4,8,6,12,16,14,10};
        System.out.println(VerifySquenceOfBST(a));
    }
    
    
    
    
    public static boolean VerifySquenceOfBST(int [] sequence) {
        if(sequence == null || sequence.length == 0){
            return false;
        }
        if(sequence.length < 2){
            return true;
        }
        return  VerifySquenceOfBST(sequence, 0, sequence.length-1);
    }

    private static boolean VerifySquenceOfBST(int[] sequence, int start, int end) {
        System.out.println(end);
        int root = sequence[end];
        int i = start;
        while(i < end){
            if(sequence[i] > root) break;
            i++;
        }
        int j = i;
        while(j < end){
            if(sequence[j] < root) return false;
            j++;
        }
        boolean left = true;
        if(i > start){
            left = VerifySquenceOfBST(sequence, start, i-1);
        }
        
        boolean right = true;
        if(i             right = VerifySquenceOfBST(sequence, i, end-1);
        }
        
        return (left && right);
    }
    
    

}
 

你可能感兴趣的:(剑指offer)