二叉搜索树的基本操作(查找、插入、删除)【数据结构】
来源:互联网 发布:软件脱壳 编辑:程序博客网 时间:2024/04/30 10:03
二叉查找树
二叉查找树(BinarySearch Tree,也叫二叉搜索树,或称二叉排序树Binary Sort Tree)或者是一棵空树,或者是具有下列性质的二叉树:
(1)、若它的左子树不为空,则左子树上所有结点的值均小于它的根结点的值;
(2)、若它的右子树不为空,则右子树上所有结点的值均大于它的根结点的值;
(3)、它的左、右子树也分别为二叉查找树。
基本操作:
//============================================//二叉搜索树的递归查找函数Position Find(BinTree BST, int X){ if(!BST) return NULL; else{ if(X > BST->Data) return Find(BST->Right, X); else if(X < BST->Data) return Find(BST->Left, X); else return BST; }}//---------------------------------------------//二叉搜索树的迭代查找函数Position IterFind(BinTree BST, int X){ while(!BST){ if(X < BST->Data) BST = BST->Left; else if(X > BST->Data) BST = BST->Right; else return BST->Data; } return NULL;}//=============================================//二叉搜索树:查找最小元素的递归函数Position FindMin(BinTree BST){ if(!BST) return NULL; else{ if(!BST->Left) return BST; else return FindMin(BST->Left); }}//----------------------------------------------//二叉搜索树:查找最小元素的迭代函数Position IterFindMin(BinTree BST){ if(!BST) return NULL; else{ while(BST->Left) BST = BST->Left; return BST; }}//-----------------------------------------------//二叉搜索树:查找最大元素的递归函数Position FindMax(BinTree BST){ if(!BST) return NULL; else{ if(!BST->Right) return BST; else return FindMax(BST->Right); }}//------------------------------------------------//二叉搜索树:查找最大元素的迭代函数Position IterFindMax(BinTree BST){ if(!BST) return NULL; else{ while(BST->Right) BST = BST->Right; return BST; }}//=================================================//二叉搜索树的插入BinTree Insert(BinTree BST, int X){ if(!BST){ //若为空,直接赋值一个新结点 BST = (BinTree)malloc(sizeof(BinTree)); BST->Data = X; BST->Left = BST->Right = NULL; } else{ // if(X > BST->Data) BST->Right = Insert(BST->Right, X); else if(X < BST->Data) BST->Left = Insert(BST->Left, X); } return BST;}//==================================================//二叉搜索树的删除BinTree Delete(BinTree BST, int X){ if(!BST) printf("ERROR!"); else if(X < BST->Data) BST->Left = Delete(BST->Left, X);//左子树递归删除 else if(X > BST->Data) BST->Right = Delete(BST->Right, X);//右子树递归删除 else{//找到要删除的结点 if(BST->Left && BST->Right){ //被删除的结点有左右两个子结点 Tmp = FindMin(BST->Right); //在右子树中找到最小的元素来填充删除的结点 BST->Data = Tmp->Data; BST->Right = Delete(BST->Data, BST->Right);//在删除结点的右子树中删除最小元素 }else{ //被删除结点有一个或无子结点 Tmp = BST; if(!BST->Left) //有右孩子或无子及结点 BST = BST->Right; else if(!BST->Right) //有自孩子或无子结点,无左右孩子时,BST被赋值为NULL BST = BST->Left; free(Tmp); } } return BST;}//=========================================================
0 0
- 数据结构基础5.2:二叉搜索树(BST)的基本操作(插入、查找、删除)
- 二叉搜索树的基本操作(查找、插入、删除)【数据结构】
- 数据结构与算法分析--二叉排序树(二叉查找树,二叉搜索树)的查找、插入和删除操作
- 【数据结构】二叉搜索树的删除,插入,查找
- 二叉查找树的基本操作之查找插入删除
- 二叉搜索树的插入,删除,查找操作
- 二叉搜索树的查找、插入、删除操作
- 二叉搜索树的插入、查找、删除等操作
- 二叉搜索树的查找与删除一些基本操作
- 二叉查找树的查找、插入、删除、释放等基本操作的实现(C语言)
- 二叉搜索树的查找、插入、删除
- 二叉搜索树的插入,查找,删除
- 数据结构学习-二叉搜索树-查找、插入、删除
- 二叉查找树的操作(插入、删除、查找)
- 二叉搜索(排序)树的 查找、插入、删除
- 二叉搜索树(二叉排序树,二叉查找树,二叉检索树)的查找,插入,删除
- 二叉树的建立,删除,查找,插入,输出(数据结构)
- 二叉查找树的基本操作(建立,插入,删除,遍历)
- hdu5358 First One 尺取法 多校联合第六场
- conn.setAutoCommit()用法及作用
- 音量图标不显示了怎么恢复
- 架构师要以自己的编程能为依托
- HDU 1198 Farm Irrigation(DFS)
- 二叉搜索树的基本操作(查找、插入、删除)【数据结构】
- java中classpath的详解
- HDU 5366-The mook jong(组合数学)
- 如何使用qq截图
- hdu5358 First One
- Java io文件操作(按字符、字节、行、随机读取,追加,文件操作)
- centos6.5 32位搭建hadoop2.2.0 集群
- UVA 152 Tree's a Crowd
- php框架laravel学习 二 (数据库建立迁移与建模)