二叉排序树的删除操作
先来看这个二叉排序树
下面是讨论删除的情况:
我们知道,如果要删除的叶子结点,则可以直接删除。
但如果删除的不是叶子结点呢?
我们知道这个树的中序遍历如下:
也就是说,比如要删除105,则我们可以把104,或108提上去覆盖掉,这样实现了删除,又不保证了他是二叉排序树。
下面是代码
Status DeleteBST(BiTree *T, int key)
{if( !*T ){return FALSE;}else{if( key == (*T)->data ){return Delete(T);}else if( key < (*T)->data ){return DeleteBST(&(*T)->lchild, key);}else{return DeleteBST(&(*T)->rchild, key);}}
}Status Delete(BiTree *p)
{BiTree q, s;if( (*p)->rchild == NULL ){q = *p;*p = (*p)->lchild;free(q);}else if( (*p)->lchild == NULL ){q = *p;*p = (*p)->rchild;free(q);}else{q = *p;s = (*p)->lchild;while( s->rchild ){q = s;s = s->rchild;}(*p)->data = s->data;if( q != *p ){q->rchild = s->lchild;}else{q->lchild = s->lchild;}free(s);}return TRUE;
}
二叉排序树的删除操作相关推荐
- c语言二叉排序树的创建与查找,C语言实现二叉查找树的插入和删除操作问题求教...
使用C语言实现二叉查找树的插入和删除操作,但在 return searchBST( T->rchild, val, f, p);出错.这里应该使用了双指针,求教应该怎么改才正确. /* +--- ...
- 二叉平衡树的插入和删除操作
[转载]二叉平衡树的插入和删除操作 1. 二叉平衡树 二叉排序树查找.插入和删除操作的时间复杂度和树的深度n有关.构建树时,当先后插入的结点按关键字有序时,二叉排序树退化为单枝树,平均查找长 ...
- DS二叉排序树之删除
题目描述 给出一个数据序列,建立二叉排序树,并实现删除功能 对二叉排序树进行中序遍历,可以得到有序的数据序列 输入 第一行输入t,表示有t个数据序列 第二行输入n,表示首个序列包含n个数据 第三行输入 ...
- mysql 插入删除操作_MySQL——增删改操作
插入语句 一次插入操作只插入一行数据 insert into [tablename](listname1,listname2,......) values (value1,value2,......) ...
- asp.net 对xml文件的读写,添加,修改,删除操作
asp.net 对xml文件的读写,添加,修改,删除操作 下面有代码调试正确 using System; using System.Collections; using System.Componen ...
- 防用户误删除,耗费一周时间把DeleteMark标志都加上来了,所有的删除操作从“物理删除”转为“逻辑删除”...
用 DeleteMark 的出发点: 1:虽然在界面上有删除提示,但是客户错误的删除了一笔数据后,想恢复被删除的数据是特别困难的,有人曾比喻,若输入数据的工作量,用1来比喻,那恢复被误删除的数据的工作 ...
- 给jqGrid数据行添加修改和删除操作链接
我这里用的不是jqGrid的自带的编辑和删除操作,我已经把分页导航栏下的编辑,删除,搜索都取消掉了,就是这句$("#list1").navGrid("#pager1&qu ...
- ASP.NET XML读取、增加、修改和删除操作
C#-XML读取.增加.修改和删除操作 1.xml文件格式如下: <?xml version="1.0" encoding="utf-8"?> &l ...
- mysql b 树删除操作,B-树的删除过程介绍
在B-树中删除节点时,可能会发生向兄弟节点借元素,和孩子节点交换元素,甚至节点合并的过程. 我们以下面的树为基础,进行删除操作. 首先明确一下这个树的定义.它是一个5阶树.所以,每个节点内元素个数为2 ...
最新文章
- 华为java安全编码规范_Java安全编码之SQL注入
- 近看图灵碗 (8. 我就是上帝) (上)
- Python基本语法_函数_参数的多类型传值
- bzoj 1864: [Zjoi2006]三色二叉树
- Hibernate反向生成映射文件点击Hibernate reserve Engineering的时候没反应的解决方法
- 成功解决local variable 'str' referenced before assignment
- MySQL等关系型数据库概述
- 四大科技巨头跟随者众 智能家居市场容量可观
- 在centos和redhat上安装docker
- from + size must be less than or equal to: [10000] but was [10550]
- Texlive中jpg和pdf转成eps
- java中doloop语句_Java中的do-while循环——通过示例学习Java编程(11)
- sharepoint2019文件服务器,在多台服务器上安装 SharePoint Server 2016 或 SharePoint Server 2019...
- origin数据平滑_科学网-关于origin曲线平滑处理 lowess-叶小球的博文
- DNS(域名系统)是什么?
- 多线程 ForkJoinPool
- 从哈密尔顿路径谈NP问题
- wechat小程序布局flex
- 好用并强大的图片插件:PhotoSwipe.js
- iPhone13充电宝哪个牌子好?iPhone13无线充电宝推荐