程序填空题:创建二叉排序树
```c++
#include
using namespace std;
typedef struct ElemType{
int key;
}ElemType;
int flag=1;
typedef struct BSTNode{
ElemType data;
BSTNode *lchild,*rchild;
}BSTNode,*BSTree;
void InsertBST(BSTree &T,ElemType e ) {
if(!T) {
BSTree S = new BSTNode;
S->data =e;
S->lchild = S->rchild = NULL;
@@[T=S](2);
}
else if (e.key< T->data.key)
@@[InsertBST(T->lchild, e )](2);
else if (e.key> T->data.key)
@@[InsertBST(T->rchild, e)](2);
}
void CreateBST(BSTree &T ) {
int i=1,n;
cin >> n;
T=NULL;
ElemType e;
while(i<=n){
cin>>e.key;
InsertBST(T, e);
i++;
}
}
void InOrderTraverse(BSTree &T)
{
if(T)
{
InOrderTraverse(T->lchild);
if(flag){cout<data.key;flag=0;}
else cout<<" "<data.key;
InOrderTraverse(T->rchild);
}
}
int main()
{
BSTree T;
CreateBST(T);
InOrderTraverse(T);
return 0;
}
```
答案:
第1空:T=S
第2空:InsertBST(T->lchild, e )
第3空:InsertBST(T->rchild, e)
#include
using namespace std;
typedef struct ElemType{
int key;
}ElemType;
int flag=1;
typedef struct BSTNode{
ElemType data;
BSTNode *lchild,*rchild;
}BSTNode,*BSTree;
void InsertBST(BSTree &T,ElemType e ) {
if(!T) {
BSTree S = new BSTNode;
S->data =e;
S->lchild = S->rchild = NULL;
@@[T=S](2);
}
else if (e.key< T->data.key)
@@[InsertBST(T->lchild, e )](2);
else if (e.key> T->data.key)
@@[InsertBST(T->rchild, e)](2);
}
void CreateBST(BSTree &T ) {
int i=1,n;
cin >> n;
T=NULL;
ElemType e;
while(i<=n){
cin>>e.key;
InsertBST(T, e);
i++;
}
}
void InOrderTraverse(BSTree &T)
{
if(T)
{
InOrderTraverse(T->lchild);
if(flag){cout<
else cout<<" "<
InOrderTraverse(T->rchild);
}
}
int main()
{
BSTree T;
CreateBST(T);
InOrderTraverse(T);
return 0;
}
```
答案:
第1空:T=S
第2空:InsertBST(T->lchild, e )
第3空:InsertBST(T->rchild, e)