二叉排序树

 在一棵空的二叉排序树中依次插入关键字序列为12,7,17,11,16,2,13,9,21,4,试编写程序创建这棵二叉排序树(要求:创建完成之后对其进行中序遍历检验其是否是递增序列以证明其正确)。


这次的博客写的就是这道题,这道题没有什么难点,关键就是对于二叉排序树的理解,这次的代码中没有写二叉排序树的删除,当然会在后面接着发出来,因为对二叉排序树来说,删除才是真的难点。对与二叉排序树,对字面意思来说,我们就能理解,就是在二叉树的基础上来排序,就是让我们创建一个有顺序的二叉树,如果我们的二叉树学的行的话,这是没有什么难点的。当然,什么都不能按照别人的方法来,每个人都要有自己的方法,针对这道题写的结构体!代码如下!

main.cpp:

#include <iostream>
using namespace std;
#include "han.h"


int main()
{
BSTree T;
createTree(T);
cout<<"以中序遍历输出"<<endl;
coutTree(T);
return 0;
}


han.cpp:

#include <iostream>
using namespace std;


typedef struct BSTNode 
{
int data;
struct BSTNode *lchild,*rchild;
}BSTNode,*BSTree;


int InsertBST(BSTree &T,int e)
{
if(T == NULL)
{
T = new BSTNode;
T->data = e;
T->lchild = T->rchild = NULL;
return 1;
}
else if(e < T->data)
{
return InsertBST(T->lchild,e);
}
else if(e > T->data)
{
return InsertBST(T->rchild,e);
}

}


void createTree(BSTree &T)
{
T = NULL;
int e;
cout<<"输入要创建的数据项"<<endl;
cin>>e;
while(e != 0)
{
int a = InsertBST(T,e);
cin>>e;
}
}

void coutTree(BSTree T)
{
if(T == NULL)
{
return ;
}
else
{
coutTree(T->lchild);
cout<<T->data<<" ";
coutTree(T->rchild);
}
}


代码的实验结果:

输入要创建的数据项
12 7 17 11 16 2 13 9 21 4 
0
以中序遍历输出
2 4 7 9 11 12 13 16 17 21

这道题是用输入0来终止循环的,当然这样也是有弊端的,大家可以按照自己的方法来实现自己的想法,总体来说这个实验就是用递归的方法来实现创建以及输出的,对于数据结构来说,递归是比较重要的!希望大家好好的理解其中的过程,不懂得请留言我,希望给大家带来帮助!

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值