在一棵空的二叉排序树中依次插入关键字序列为 12,7,17,11,16,2,13,9,21,4试编写程序创建这棵二叉排序树(要求:创建完成之后对其进行中序遍历检验其是否是递增序列以证明其正确)
源代码为:
#include<iostream>
#include<cstdio>
#include<cstring>
#define ENDFLAG -1
using namespace std;
typedef int KeyType,InfoType;
typedef struct{
KeyType key;
InfoType otherinfo;
}ElemType;
typedef struct BSTNode{
ElemType data;
struct BSTNode *lchild,*rchild;
}BSTNode,*BSTree;
//二叉排序树的插入
void InsertBST(BSTree &T,ElemType e)
{
BSTNode *s;
if(!T){
s=new BSTNode;
s->data=e;
s->lchild=s->rchild=NULL;
T=s;
}
else if(e.key < T->data.key)
InsertBST(T->lchild,e);
else if(e.key > T->data.key)
InsertBST(T->rchild,e);
}
//二叉树的创建
void creatBST(BSTree &T)
{
T=NULL;
ElemType e;
cin>>e.key;
while(e.key!=ENDFLAG){
InsertBST(T,e);
cin>>e.key;
}
}
//中序遍历二叉树T的递归算法
void TnOrderTraverse(BSTree T)
{
if(T){
TnOrderTraverse(T->lchild);
cout<<T->data.key<<" ";
TnOrderTraverse(T->rchild);
}
}
int main()
{
BSTree T;
ElemType e;
cout<<"创建树:"<<endl;
creatBST(T);
cout<<"中序遍历树 输出结果为:"<<endl;
TnOrderTraverse(T);
return 0;
}