二叉排序树的问题
/* Note:Your choice is C IDE */#include "stdio.h"
#define MAX 100
#include<malloc.h>
typedef int keytype;
typedef struct node
{
keytype key;
char data;
struct node *lchild,*rchild;
}BSTNode;
void displayBST(BSTNode *root);
int insertBST(BSTNode *p,keytype k)
{
if(!p)
{
p=(BSTNode *)malloc(sizeof(BSTNode));
p->key=k;
p->lchild=p->rchild=NULL;
return 1;
}
else if(k==p->key)
return 0;
else if(k<p->key)
return insertBST(p->lchild,k);
else
return insertBST(p->rchild,k);
}
BSTNode *creatBST(keytype a[],int n)
{
BSTNode *root=NULL;
int i=0;
while(i<n)
{
if(insertBST(root,a[i])==1)
{
printf("第%d步,插入%d:",i+1,a[i]);
displayBST(root);printf("\n");
i++;
}
}
return root;
}
void displayBST(BSTNode *root)
{
if(root)
{
printf("%3d",root->key);
if(root->lchild||root->rchild)
{
printf("(");
displayBST(root->lchild);
if(root->rchild)
printf(",");
displayBST(root->rchild);
printf(")");
}
}
}
void main()
{
BSTNode *root;
keytype k=6;
int a[]={4,9,0,1,8,6,3,5,2,7},n=10;
printf("创建一颗BST树:\n");
root=creatBST(a,n);
printf("BST:");displayBST(root);printf("\n");
}
为什么程序运行的时候没有调用输出函数啊!奇怪啊!