判别二叉树是否为二叉排序树的完整程序 5

c语言版... c语言版 展开
 我来答
菅石03x
2010-06-28 · TA获得超过230个赞
知道小有建树答主
回答量:89
采纳率:0%
帮助的人:0
展开全部
给你一个测试代码。
VC下通过。

#include <stdio.h>
#include <stdlib.h>

struct node
{
node(int i):data(i),left(NULL),right(NULL){}
int data;
node *left; //左孩子结点
node *right; //右孩子结点
void inorder(node *root) //中序遍历,符合升序输出
{
if(root!=NULL)
{
inorder(root->left);
printf("%d ",root->data);
inorder(root->right);
}
}
void insert(node *&ptr,int item) //在排序树中插入元素
{
if(ptr==NULL)
ptr=new node(item);
else if(item<ptr->data)
insert(ptr->left,item);
else insert(ptr->right,item);
}
};

int main()
{
int t=rand(),i=0;
node *x=new node(t);
printf("待排序数列为:%d ",t);
for(;i<9;i++)
{
t=rand();
printf("%d ",t);
x->insert(x,t);
}
printf("\n树升序输出:");
x->inorder(x);
printf("\n");
return 0;
}

很明显地看到,当一棵二叉排序树以中序遍历输出时,是输出一组递增序列。
这样就可以知道,只要当一棵树的中序遍历输出不是一组递增序列时,就可判断其不是一棵二叉排序树。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式