- #include <stdio.h>
#include <stdlib.h>
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)
elseprintf("这棵树是二叉排序树!\n");
return 0;printf("这棵树不是二叉排序树!\n");
}
已经晕了

用这段不完整代码写一个判断给定二叉树是否为二叉排序树的算法
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
1条回答 默认 最新
关注
不知道你这个问题是否已经解决, 如果还没有解决的话:- 你可以参考下这篇文章:(算法练习)——二叉树创建、遍历的实现(完整代码)
如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报