C++代码,数据结构-二叉排序树
来源:互联网 发布:mac系统能做什么 编辑:程序博客网 时间:2024/06/11 23:00
排序二叉树的建立,遍历,,,利用排序二叉树来进行排序
#include<iostream>#include<fstream>#include<cstdlib>#include<queue>using namespace std;//排序二叉树的建立,遍历,,,利用排序二叉树来进行排序 struct Binode{ int data; Binode *lchild,*rchild;};typedef Binode* Bitree;//从空树出发,经过一系列的查找插入操作之后,可生成一棵排序二叉树bool Searchbit(Bitree T,int key,Bitree f,Bitree &p){//查找操作//在T所指的二叉树中寻找,若找到等于key的元素,返回true,p指向改结点//否则,p指向访问的最后一个结点,返回false。 f指向T的双亲,初始调用为NULL..用到递归if(!T){p=f; return false;}//若T为空,p指向双亲f。返回falseelse if(key==T->data){p=T;return true;}//查找成功else if(key<T->data){ return Searchbit(T->lchild,key,T,p);}//在左子树继续查找else return Searchbit(T->rchild,key,T,p);//在右子树继续查找}bool Insertbit(Bitree &T,int e){//插入操作 //先利用查找,若不存在则插入,否则返回falseBitree p;if(!Searchbit(T,e,NULL,p)){ Bitree tem=new Binode; tem->data=e; tem->lchild=tem->rchild=NULL; if(!p) T=tem; //被插入点为根节点 else if(e<p->data)p->lchild=tem;//被插入点为左孩子 else p->rchild=tem;//右孩子}else return false;}void vist(int c){cout<<c<<" ";}void Midtravel(Bitree T){//中序遍历,即顺序输出一个有序数列 if(T){ Midtravel(T->lchild); vist(T->data); Midtravel(T->rchild); }}//删除操作bool deletes(Bitree&p){//删除结点p,并重接它的孩子,三种情况。if(!p->rchild){// Bitree tem; tem=p; p=p->lchild;}else if(!p->lchild){ Bitree tem; tem=p; p=p->rchild; delete tem;}else{ Bitree q=p,s=p->lchild;while(s->rchild){ q=s;s=s->rchild; }p->data=s->data;if(q==p){ q->lchild=s->lchild;}else{q->rchild=s->lchild;}}}bool Deletebit(Bitree &T,int key){if(!T)return false;else{ if(T->data==key){return deletes(T);} else if(key<T->data)return Deletebit(T->lchild,key); else return Deletebit(T->rchild,key);}}int main(){ int x;Bitree T=NULL;//先设为空,不然会出错while(cin>>x){ Insertbit(T,x);}cin.clear();Midtravel(T);//输出序列cout<<"请输入要删除的数"<<endl;cin>>x;Deletebit(T,x);Midtravel(T);return 0;}
运行结果
0 0
- C++代码,数据结构-二叉排序树
- 二叉排序树的C代码
- 二叉排序树及其C代码
- 看数据结构写代码(55) 二叉排序树
- [数据结构]二叉排序树
- 数据结构 - 二叉排序树
- 数据结构 - 二叉排序树
- 数据结构-二叉排序树
- 数据结构-二叉排序树
- 数据结构 二叉排序树
- 数据结构:二叉排序树
- 数据结构 二叉排序树
- 数据结构-二叉排序树
- 数据结构---二叉排序树
- 数据结构--二叉排序树
- 数据结构---二叉排序树
- 数据结构--二叉排序树
- 数据结构-二叉排序树
- Programmer Study Guide-游戏程序员指南
- 简单的apache log4j日志设置与使用实例
- dojo省份地市级联之省份封装类(一)
- 对于android触摸事件模型的一些理解
- java学习第一天笔记 环境变量的配置与简单的dos指令
- C++代码,数据结构-二叉排序树
- java 判断界面是否含有邮箱代码
- 深入理解Java HelloWorld
- MYSQL数据库命名规则
- 进入论坛出现403
- Creating an OData Endpoint in ASP.NET Web API 2(OData终结点)
- CocoaPods详解之----进阶篇
- Python 字符串 string slicing
- 黑马程序员-初识DOM模型