#include <deque>
#include <stdio.h>
#include <iostream>
#include <stdlib.h>
using namespace std;
bool VerifySequenceOfBST(int *sequence, int length)
{
if (sequence == NULL || 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);
}
int main()
{
int a[7] = {5,7,6,9,11,10,8};
int a1[4]= {7,4,6,5};
bool result =false;
result = VerifySequenceOfBST(&a1[0], 4);
cout<<result<<endl;
return 0;
}
面试题24:二叉搜索树的后续遍历序列
最新推荐文章于 2022-09-01 11:36:40 发布