输入一个整数数据,判断该数组是不是某二叉搜索树的后续遍历结果。如果是则返回true,否则返回false。假设输入的数组的任意两个数字都互不相同。
关于树的遍历问题相对解法比较单一,固定套路。
bool VerifySequenceOfBST(int sequence[] ,int length)
{
if(sequence==nullptr||length<=0)
return false;
int root=sequence[length-1];
int i=0;
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=VerifySequenceOfBST(sequence,i);
bool right=true;
if(i<length-1)
right=VerifySequenceOfBST(sequence+i,length-i-1);
return (left&&right);
}