#include<stdio.h>
bool VerifySequenceOfBST(int sequence[],int length){
if(sequence==NULL || length<=0)
return false;
int root=sequence[length-1];
int i;
for(i=0;i<length-1;i++)
if(sequence[i]>root)
break;
for(int j=i;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-1-i);
return left&&right;
}
void main(){
int data[] = {4, 8, 6, 12, 16, 14, 10};
bool flag=VerifySequenceOfBST(data,7);
if(flag)
printf("后序搜索二叉树序列正确\n");
else printf("不正确\n");
int data1[] = {7, 6, 4, 5};
flag=VerifySequenceOfBST(data1,4);
if(flag)
printf("后序搜索二叉树序列正确\n");
else printf("不正确\n");
flag=VerifySequenceOfBST(NULL,0);
if(flag)
printf("后序搜索二叉树序列正确\n");
else printf("不正确\n");
}
VerifySequenceOfBST
最新推荐文章于 2020-06-10 16:35:46 发布