当前位置: 首页 > news >正文

Cpp8 — 二叉搜索树

二叉搜索树(搜索二叉树、二叉排序树)

二叉搜索树又称二叉排序树,它要么是一棵空树,要么是具有以下性质的二叉树:
1.若它的左子树不为空,则左子树上所有节点的值都小于根节点的值

2.若它的右子树不为空,则右子树所有节点的值都大于根节点的值

3.它的左右子树也分别为二叉搜索树

搜索二叉树的查找:

最多查找高度次,效率较高

搜索二叉树具有排序+去重的功能,叫它二叉排序树是因为中序遍历时,其遍历结果就是一个有序的结果。

二叉搜索树的删除

 替换法删除的代码实现

 按照上面的写法同时解决两种情况(即上述和下述情况)是会出错的(指针问题)。

二叉搜索树不支持修改。

二叉搜索树的缺陷:

二叉搜索树的增删查的时间复杂度:O(h),最坏的情况是h = N

改进方案:平衡树:主要是AVL树和红黑树

平衡树和搜索树仅仅只是效率的区别,功能上并没有区别。

二叉搜索树的应用

Key的搜索模型:判断关键字在不在。

1.例如:宿舍门禁

(二叉搜索树还可以顺便排序+去重)

2.检查一篇英文文档中单词拼写是否正确

我们可以把词库中的单词都插入到一棵搜索树中,然后查的时候就查在不在这里面,不在就说明单词有问题

Key/Value模型:通过Key去找value

1.简单的中英翻译程序

2.统计水果出现的次数

具体实现:第二十七节2:40:00到完 只听了一遍

http://www.lryc.cn/news/107008.html

相关文章:

  • 【实操教程】如何开始用Qt Widgets编程?(一)
  • openmp和avx配置
  • 18 个JS优化技巧,可以解决 90% 的屎山代码!!!
  • go逆向符号恢复
  • 论文阅读- Uncovering Coordinated Networks on Social Media:Methods and Case Studies
  • 应急响应-Linux
  • 利用spinal的伴生对象简化集成rtl代码过程
  • C# Blazor 学习笔记(7):组件嵌套开发
  • DAY1,C高级(命令,Linux的文件系统,软、硬链接文件)
  • Race竞争型漏洞
  • 基于 FFlogs API 快速实现的 logs 颜色查询小爬虫
  • 【牛客】统计字符
  • 测试|Junit相关内容
  • 19-2.vuex
  • 微信小程序 选择年和月以及回显 使用picker-view组件
  • 助力工业物联网,工业大数据之ST层的设计【二十五】
  • MySQL实践——参数SQL_SLAVE_SKIP_COUNTER的奥秘
  • 小程序面试题
  • 微信小程序接入腾讯云天御验证码
  • Docker build 命令详解
  • 基于Translators的多语言翻译解决方案
  • Unity 性能优化五:渲染模块压力
  • Redis数据库 | 事务、持久化
  • 浅析大数据时代下的视频技术发展趋势以及AI加持下视频场景应用
  • TensorRT学习笔记--基于YoloV8检测图片和视频
  • 【C++】开源:matplotlib-cpp静态图表库配置与使用
  • 香港IT软件开发服务公司Alpha Technology 申请纳斯达克IPO上市
  • JavaScript:数组深拷贝
  • 干翻Dubbo系列第七篇:@EnableDubbo、@DubboService、@DubboReference注解的作用
  • clickhouse断电重启故障解决方案