写一个算法判断给定的关键字序列是否可能是二叉排序树的搜索序列。
#include <stdio.h>
#include <stdlib.h>
#define TRUE 1
#define FALSE 0
typedef int Status;
Status BTSeriesTell(int a[],int n);
int main()
{
int n;
printf("序列有多少个:");
scanf("%d",&n);
int i,s[50];
for(i=0;i<n;i++)
{
printf("请输入第%d个:",i+1);
scanf("%d",&s[i]);
}
if(BTSeriesTell(s,n))
printf("\n是二叉树序列。\n");
else
printf("\n不是二叉树序列。\n");
return 0;
}
Status BTSeriesTell(int a[],int n)
{
int i,j;
for(i=1;i<n-1;i++)
{
if(a[i-1]<a[i])
{
for(j=i;j<n;j++)
if(a[i-1]>a[j])
return FALSE;
}
else
{
for(j=i;j<n;j++)
if(a[i-1]<a[j])
return FALSE;
}
}
return TRUE;
}