#include<stdio.h>
#include<stdlib.h>
#define TRUE 1 /*状态码预定义*/
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
#define OVERFLOW -2
typedef int Status;
typedef struct BiTNode
{
int data;
struct BiTNode *lchild,*rchild;
}BiTNode, *BiTree;
Status SearchBST(BiTree T,int key,BiTree f,BiTree &p)
{
if(!T)
{
p=f;
return FALSE;
}
else if(key==T->data)
{
p=T;
return TRUE;
}
else if(key<T->data)
return (SearchBST(T->lchild,key,T,p));
else
return (SearchBST(T->rchild,key,T,p));
}
Status InsertBST(BiTree &T, int e)
{
BiTree p,s;
if(!SearchBST(T,e,NULL,p))
{
s=(BiTree)malloc(sizeof(BiTNode));
s->data=e;
s->lchild=s->rchild=NULL;
if(!p)
T=s;
else if(e<p->data)
p->lchild=s;
else
{
p->rchild=s;
return TRUE;
}
}
else
return FALSE;
}
void InOrderTraverse(BiTree T)
{
if(T==NULL) return;
InOrderTraverse(T->lchild);
printf("%d ",T->data);
InOrderTraverse(T->rchild);
}
int main()
{
int a[10];
int i;
BiTree T;
T=NULL;
printf("请输入十个整数:");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<10;i++)
InsertBST(T,a[i]);
printf("排序结果是:\n");
InOrderTraverse(T);
return 0;
}
C语言,二叉排序树
最新推荐文章于 2024-08-21 20:44:22 发布