问题及代码:
#include <stdio.h>
#include <malloc.h>
typedef int KeyType;
typedef char InfoType[10];
typedef struct node //记录类型
{
KeyType key; //关键字项
InfoType data; //其他数据域
struct node *lchild,*rchild; //左右孩子指针
} BSTNode;
//在p所指向的二叉排序树中,插入值为k的节点
int InsertBST(BSTNode &p,KeyType k)
{
if (pNULL) //原树为空, 新插入的记录为根结点
{
p=(BSTNode *)malloc(sizeof(BSTNode));
p->key=k;
p->lchild=p->rchild=NULL;
return 1;
}
else if (kp->key) //树中存在相同关键字的结点,返回0
return 0;
else if (kkey)
return InsertBST(p->lchild,k); //插入到p的左子树中
else
return InsertBST(p->rchild,k); //插入到*p的右子树中
}
//由有n个元素的数组A,创建一个二叉排序树
BSTNode *CreateBST(KeyType A[],int n) //返回BST树根结点指针
{
BSTNode *bt=NU