输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。
public boolean VerifySquenceOfBST(int [] sequence) {
boolean result = true;
if (sequence == null || sequence.length ==0) {
return false;
}
int left = 0;
int right = sequence.length-1;
result = getBST(sequence, left, right);
return result;
}
public static boolean getBST(int [] sequence,int left,int right){
boolean result = true;
if (left == right) {
return result;
}
int k = sequence[right];
int i=left;
for ( i = left; i < right; i++) {
if (k < sequence[i]) {
break;
}
}
int mid = left;
if (i >left) {
mid = i-1;
}
if (i < right) {
for(;i < right;i++){
if (k > sequence[i]) {
result = false;
break;
}
}
}
if (result) {
if (getBST(sequence, left, mid)) {
if ((mid +1) <= right-1) {
if ( getBST(sequence, mid+1, right-1)){
result = true;
}else{
result = false;
}
}else
result = true;
}else{
result = false;
}
}
return result;
}