您的位置:首页 > 其它

二叉排序树

2015-05-11 18:58 337 查看
二叉排序树的创建、插入结点,并以中序遍历输出。
#include "stdio.h"
#include "malloc.h"

typedef struct TNode
{
int data;
struct TNode *lchild, *rchild;
}TNode, *BST;

void create(BST &T);                //创建根结点
void insert(BST T, int k);          //插入结点
void comprison(BST &T, int k);      //比较结点
void inorder(BST T);                //中序遍历

int main()
{
int k;
BST T;
create(T);
scanf("%d", &k);
BST p = T;
while(k != 0)
{
comprison(T, k);
scanf("%d", &k);
}
printf("中序遍历:");
inorder(T);
printf("\n");

return 0;
}
//创建根结点
void create(BST &T)
{
int a;
scanf("%d", &a);
if(a != 0)
{
T = (BST)malloc(sizeof(TNode));
T->data = a;
T->lchild = T->rchild = NULL;
}
}
//插入结点
void insert(BST T, int k)
{
BST q;
q = (BST)malloc(sizeof(TNode));
q->data = k;
q->lchild = q->rchild = NULL;
if(k < T->data)
T->lchild = q;
else
T->rchild = q;
}
//比较结点
void comprison(BST &T, int k)
{
if(k == T->data)
{
printf("请重新输入!\n");
return;
}
else
{
if(k < T->data)
{
if(T->lchild == NULL)
insert(T, k);
else
comprison(T->lchild, k);
}
else
{
if(T->rchild == NULL)
insert(T, k);
else
comprison(T->rchild, k);
}
}
}
//中序遍历
void inorder(BST T)
{
if(T != NULL)
{
inorder(T->lchild);
printf("%d ", T->data);
inorder(T->rchild);
}
}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  二叉排序树