#include<stdio.h>
#include<stdlib.h>
typedef int ElemType;
typedef struct BTNode/*树节点定义*/
{
ElemType key;
struct BTNode *lchild;
struct BTNode *rchild;
}BTNode;
int BSTInsert(BTNode *&bt, int key)/*向二叉排序树插入一个新的节点*/
{
if (bt == NULL)/*找到了待插入元素的位置*/
{
bt = (BTNode*)malloc(sizeof(BTNode));
bt->lchild = bt->rchild = NULL;
bt->key = key;
return 1;
}
else
{
if (key == bt->key)
return 0;
else if (key < bt->key)
return BSTInsert(bt->lchild,key);
else
return BSTInsert(bt->rchild,key);
}
}
void CreatBST(BTNode *&bt, int key[], int n)/*创建一个二叉排序树*/
{
int i;
bt = NULL;
for (i = 0; i < n; ++i)
BSTInsert(bt,key[i]);
}
void inorder(BTNode *p)/*中序遍历二叉树*/
{
if (p != NULL)
{
inorder(p->lchild);
printf("%d ",p->key);
inorder(p->rchild);
}
}
int main()
{
int i,k[10];
printf("Please inter ten numbers:\n");
for (i = 0; i < 10; ++i)
scanf("%d",k+i);
BTNode * bt;
CreatBST(bt, k, 10);
printf("After sort:\n");
inorder(bt);
return 0;
}
建立一棵二叉排序树
最新推荐文章于 2022-10-03 19:37:59 发布