- #include
#include
typedef struct TNode *Position;
typedef Position BinTree;
struct TNode
{
int data;
BinTree lchild,rchild;
};
BinTree B[100];
BinTree CreateBinTree()
{
int num,i,n;
BinTree t,s;
t=NULL;
printf("建立二叉树(-1表示为虚结点,0表示输入结束):\n");
num=0;
scanf("%d",&n);
while(n!=0)
{ s=(BinTree)malloc(sizeof(BinTree));
s->data=n;
s->lchild=s->rchild=NULL;
num++;
if(!t)
t=s;
B[num]=s;
scanf("%d",&n);
}
for(i=1;i<=num;i++)
{ if(B[i]->data!=-1)
{
if(2*i<=num && B[2*i]->data!=-1)
B[i]->lchild=B[2*i];
if(2*i+1<=num && B[2*i+1]->data!=1)
B[i]->rchild=B[2*i+1];
}
}
return t;
}
int IsSearchTree(BinTree t) //判别给定的二叉树是否是二叉排序树
{
/* 你的代码将被嵌在这里 */
}
int main(void)
{
int flag=0;
BinTree tree;
tree=CreateBinTree();
flag=IsSearchTree(tree);
if(flag) printf("这棵树是二叉排序树!\n");
else printf("这棵树不是二叉排序树!\n");
return 0;
}
已经晕了
不知道你这个问题是否已经解决, 如果还没有解决的话:
如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^