面试题24:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则返回true,否则返回false。假设输入的数组的任意两个数字互不相同
//二叉搜索树的后序遍历序列
bool verifySquenceOfBST(int sequence[],int length){
if(sequence==NULL||length==0)return false;
int i=0;
int root=sequence[length-1];
//左子树序列
for(;i<length-1;i++){
if(sequence[i]>root)
break;
}
//右子树序列
int j=i;
for(;j<length-1;j++){
if(sequence[j]<root)
return false;
}
bool left=true;
if(i>0)
left=verifySquenceOfBST(sequence,i);
bool right=true;
if(i<length-1)
right=verifySquenceOfBST(sequence+i,length-i-1);
return left&&right;
}
参考:剑指offer 何海涛