二叉排序树的简单实现
来源:互联网 发布:社工数据库 编辑:程序博客网 时间:2024/05/01 14:04
今天实现下二叉排序树的算法,为学习avl,rbt,做好准备,那我们就开始吧,。
#include "iostream"using namespace std;typedef struct _BitNode{ int data; struct _BitNode *lchild,*rchild;}BitNode,*BiTree;//搜索元素,参数:(0: 根节点,1: 查找的元素,2: 找到目标元素的前一个节点指针,初始值为0// 3:找到元素的指针) bool SearchBST(BiTree T,int key,BiTree pre,BiTree&n) { if(!T) { n=pre; return false; } else if(key==T->data) { n=T; return true; } if(key<T->data) SearchBST(T->lchild,key,T,n) ; else { SearchBST(T->rchild,key,T,n); } } //插入元素 bool InsetBST(BiTree &T,int k) { BitNode* p; if(!SearchBST(T,k,NULL,p)) { BitNode * temp=new BitNode; temp->data=k; temp->lchild=temp->rchild=NULL; if(!p) { T=temp; } else { if(k<p->data) p->lchild=temp; else { p->rchild=temp; } } return 0; } else { return false; } } //中序遍历并输出元素 void InorderReverse(BiTree T) { if(T) { InorderReverse(T->lchild); cout<<T->data<<endl; InorderReverse(T->rchild); } } //从树种删除元素,分三种情况1,删除的元素只有右子树,2 只有左子树,3 有左右子树 void Delete(BiTree&T) { BitNode*s,*p; if(T->rchild==NULL) { s=T; T=T->lchild; free(s); } else if(T->lchild==NULL) { s=T; T=T->rchild; free(s); } else { p=T; s=T->lchild; while (s->rchild) { p=s; s=s->rchild; } T->data=s->data; if(p!=T) { p->rchild=s->lchild; } else p->lchild=s->lchild; free(s); } } bool DeleElement(BiTree&T,int key) { if(!T) { return 0; } if(T->data==key) { Delete(T); return 1; } if(key<T->data) DeleElement(T->lchild,key); else DeleElement(T->rchild,key); } int main(){ BiTree tree=NULL; int a[]={62,88,58,47,35,73,51,99,37,93}; for(int i=0;i<10;i++) InsetBST(tree,a[i]); InorderReverse(tree); cout<<" "<<endl<<endl; DeleElement(tree,62); InorderReverse(tree); return 0;}
- 二叉排序树的简单实现
- 二叉排序树的简单实现
- 简单实现的二叉排序树
- 二叉排序树的简单实现
- 二叉排序树的一个简单实现
- 二叉排序树实现简单的通讯录
- java实现简单的二叉排序树
- 二叉排序树_Java简单实现
- 二叉排序树的实现
- 二叉排序树的实现
- 二叉排序树的实现
- 二叉排序树的实现
- 二叉排序树的实现
- 二叉排序树的实现
- 数据结构 - 二叉排序树的实现
- 二叉排序树的完整实现
- 二叉排序树的C++实现
- 二叉排序树的实现
- VC++6.0中各种文件的作用
- 直接拿来用!最火的Android开源项目(一)
- c/c++ api mysql_query()返回值
- 职业设计生涯:打造世界上最小巧最强大手电
- 头文件在编译过程中的作用
- 二叉排序树的简单实现
- cocos2d-x在android下添加多盟插屏广告
- PMt表分析
- Leap Motion架构
- 木兰围场
- HDU 1856 并查集
- C语言新体会
- 2013 多校第七场 hdu 4667 Building Fence(计算几何、凸包)
- MongoDB 应用点滴