二叉排序树又称为二叉查找树,对树中任意一个结点来说,如果它的左子树不为空,那么左子树中的数一定小于该结点中的数,同理,非空右子树中的数一定大于该结点中的数。(也可以设置为左大右小)

查找

在二叉排序树中查找一个数的算法如下:

bTree* searchT(bTree* T, int key)
{if (T == NULL)return NULL;if (T->data == key)return T;else if (T->data < key)return searchT((T->rc, key);elsereturn searchT(T->lc, key);
}
插入

如何构造一棵二叉排序树,可以通过插入一个个结点来实现,下面是在二叉树中插入结点的算法:

bool insertBtree(bTree* T, int ele)
{if (T == NULL)//空结点{T = new bTree;T->data = ele;T->lc = T->rc = NULL;return true;}bTree* f;bTree* temp = new bTree;while (T!=NULL&&T->data!=ele){f = T;if (T->data < ele)T = T->rc;else(T->data > ele)T = T->lc;}if (T)return false;//树中已存在该数据temp->data = ele;temp->lc = temp->rc = NULL;if (ele > f->data)f->rc = temp;elsef->lc = temp;return true;
}
删除

删除二叉树结点a
1,若a为叶子结点,直接删除
2,若a只有一个子树,用其子树代替其位置
3,若a有两个子树,有一个比较好用的方法:因为二叉树中任何一个结点及其子树的排序结果都为左-根-右,它符合中序遍历的顺序,故如果要删除a,可以用中序遍历中a的直接前驱代替a或者用a的直接后继代替a。

二叉排序树(c/c++)相关推荐

  1. 数据结构(8-3)二叉排序树(查找、插入删除)

    目录 一.基础理论 1.特点: 2.结构: 二.查找 三.插入 四.删除 1.被删除的结点D是叶子结点 2.被删除的结点D仅有一个孩子 2-1.删除结点14(有左无右) 2-2.删除结点 10 (有右 ...

  2. 二叉排序树的相关操作

    #include <IOSTREAM.H> #include <STDLIB.H> //二叉树的生成和释放 typedef struct Node {int data;stru ...

  3. 树和二叉树(四种遍历,建树)详解+二叉排序树(包含图像和相关习题)

    目录 树和二叉树 一.树 2.有序树和无序树 3.森林 4.树的基本性质 二.二叉树的概念 (1)二叉树的编号 1.二叉树和度为2的有序树的区别: 2.满二叉树 3.完全二叉树: 4.平衡二叉树: 5 ...

  4. 二叉排序树(完整代码)

    目录 二叉排序树 1.二叉排序树(代码) P1087 FBI树 (建树) HDU 4707 Pet 二叉排序树 先序遍历:根->左->右 中序遍历:左->根->右 后序遍历:左 ...

  5. 二分查找与二叉排序树

    文章目录 二分查找与二叉排序树 二分查找 1. 二分查找 2. 区间查找 3. 基于旋转数组的二分查找 二叉查找(排序)树 1. 插入节点 2. 查找节点 二分查找与二叉排序树 二分查找 1. 二分查 ...

  6. 平衡二叉排序树的创建和实现调整过程

    1.已知一棵二叉树的先序序列为:abcedfgh,中序序列为:bcedaghf,画出该二叉树,并给出其后序序列. 2.已知一组关键字为(15,11,22,5,66,58,36,10,38),按照该元素 ...

  7. 二叉排序树的存储结构和增删查改

    顺序存储结构 #include <stdio.h> //用顺序数组的形式,存储建立一个二叉搜索树 /* 1,我们根据完全二叉树的编号,我们做数组角标1存储输入的第一个元素 2,得到根元素之 ...

  8. 【swjtu】数据结构实验8_平衡二叉排序树

    实验内容及要求: 从键盘输入若干两两互不相同的非0整数,直到输入0时停止.将输入的所有非0整数按输入次序插入二叉排序树来构造平衡的二叉排序树.输出平衡的二叉排序树的先序和中序递归遍历次序:按中序递归遍 ...

  9. 三十一、二叉排序树的创建、删除和遍历

    一.实际需求 给你一个数列 (7, 3, 10, 12, 5, 1, 9),要求能够高效的完成对数据的查询和添加 解决方案一:使用数组 数组未排序, 优点:直接在数组尾添加,速度快. 缺点:查找速度慢 ...

  10. 二叉查找树(二叉排序树)的详细实现

    1.序 详细实现了二叉查找树的各种操作:插入结点.构造二叉树.删除结点.查找.  查找最大值.查找最小值.查找指定结点的前驱和后继 2.二叉查找树简介 它或者是一棵空树:或者是具有下列性质的二叉树: ...

最新文章

  1. oracle的for和i++
  2. 项目: 最简单的飞机大战游戏
  3. ios 请求失败封装_vue_axios请求封装、异常拦截统一处理
  4. Stanley-系列三
  5. iPhone XS Max第三方售价低于7千元 引用户疯抢
  6. 2021年10月Python小屋编程比赛获奖名单
  7. C#学习之ObjectOriented、Record
  8. LCA(最近公共祖先)
  9. 8255工作方式一A口和B口输出
  10. eclipse下没有build project的解决方法
  11. android助手专业版,安卓助手-安卓助手app专业版下载-安卓助手付费版-电玩咖
  12. 灵性图书馆:好书推荐-《当下的力量》
  13. VBA综合应用——解压并剔除Excel敏感数据
  14. 学计算机毁一生,为什么说学医毁三代学法毁一生
  15. 网络编程--TCP/IP协议(二)
  16. dumpbin查看dll中函数名字的问题
  17. 或许,大家知道小黄鸡是一个机器人之后,会很失望。但是,这似乎也说明了,能随叫随到陪你聊天的人,或许是不存在的...
  18. win10系统下如何配置免安装版python(U盘版)及第三方库
  19. 找出最接近的对称数字
  20. 2022中国可持续消费报告:近半数消费者将月度消费2-5成用于低碳产品 | 美通社头条...

热门文章

  1. springcloud微服务总结四 负载均衡
  2. MyEclipse中jsp编码设置
  3. Java VS .NET:Java与.NET的特点对比
  4. spring框架学习(一)入门
  5. zend studio报错
  6. 【原】 动态加载dll
  7. 怎么复制黑苹果config配置_估计是最后一次折腾黑苹果,技嘉 Z490 Vision D 的 OC 配置分享...
  8. POJ 3621 最优比率生成环
  9. 【数字信号处理】相关函数应用 ( TDOA 时差估计 | 时间差与距离差 | 方向定位与精准定位 | 信号描述 | 通过相关函数求时间差 )
  10. 【数字信号处理】卷积编程实现 ( Matlab 卷积和多项式乘法 conv 函数 | 使用 matlab 代码求卷积并绘图 )