一处代码不会填充
输入n个整数,从空开始建立一棵二叉排序树,每输入一个整数x,判断该数是否在该二叉排序树中,如果不在,则加入到二叉排序树中。测试数据
8
10 18 3 8 12 2 7 4
样例输出
2 3 4 7 8 10 12 18
#include <stdio.h>
#include <stdlib.h>
#define TRUE 1
#define FALSE 0
typedef int Status;
typedef int KeyType;
typedef struct ElemType
{
int key;
} ElemType;
typedef struct BiTNode
{
ElemType data;
struct BiTNode *lchild, *rchild;
} BiTNode, *BiTree;
Status SearchBST(BiTree T,KeyType key,BiTree f,BiTree &p)
{
////////////////////////////////////////////////////////////////////
}
void InsertBST(BiTree &T,ElemType e)
{
BiTree s;
if (T==NULL)
{
s=(BiTree)malloc(sizeof(BiTree));
s->data=e;
s->lchild=NULL;
s->rchild=NULL;
T=s;
}
else if(T->data.key>e.key) InsertBST(T->lchild,e);
else if(T->data.key<e.key) InsertBST(T->rchild,e);
}
void create_bsttree(BiTree &bt)
{
int i,n;
ElemType e;
bt=NULL;
scanf("%d",&n);
for(i=1; i<=n; i++)
{
scanf("%d",&e.key);
InsertBST(bt,e) ;
}
}
void visit(ElemType e)
{
printf("%d ",e.key);
}
void inorder(BiTree bt)
{
if (bt)
{
inorder(bt->lchild);
visit(bt->data);
inorder(bt->rchild);
}
}
int main(void) {
BiTree bt;
create_bsttree(bt);
inorder(bt);
return 0;
} 建议楼主查看二叉树的遍历(先序遍历、中序遍历、后序遍历)
参考代码:
Status SearchBST(BiTree T,KeyType key,BiTree f,BiTree &p)
{
if(NULL != T)
{
} //利用先序遍历查找值
int LeftSearch(BiTree T, int SearchNum)
{
if (T != NULL) {
LeftSearch(T->lchild, int SearchNum);
//比对最左端的结点权值,依次递归比对其它结点
if (SearchNum== T->data ) {
return 0;
}
LeftSearch(T->rlichild, int SearchNum)
}
}
页:
[1]