刷题记录-二叉搜索树的后序遍历序列

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

public class Solution {
    public boolean VerifySquenceOfBST(int [] sequence) {
        if(sequence.length==0){                       # 每个算法否要判断输入是否为空
            return false;
        }
        return VerifySquenceOfBST(sequence,0, sequence.length-1);
    }
    public boolean VerifySquenceOfBST(int [] sequence,int start, int end){
        if(start>=end){                                 # 因为>写成=调试了很久,对于递归的结束条件,最好的方法是举例子,不用很多,就用递归结束前的输入
            return true;
        }
        int root = sequence[end];
        int i = start;
        while(i<end){
            if(sequence[i]>root){
                for(int j=i;j<end;j++){
                    if(sequence[j]<root){
                        return false;
                    }
                }
                break;
            }
            i++;
        }
        boolean left = VerifySquenceOfBST(sequence,start,i-1);
        boolean right = VerifySquenceOfBST(sequence,i+1,end);
        return left&&right;
        
    }
}

猜你喜欢

转载自www.cnblogs.com/tendermelon/p/12789402.html