输入一个非空整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出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; } }