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

红黑数原理及存在原因

我红黑树那么牛,你们为什么不用?_哔哩哔哩_bilibili

面试时经常会被问到红黑树,它到底有什么优点呢?

对于查找数据,数组二分查询速度最快,时间复杂度为O(logN)。但是如果增加和删除数据,数组就要进行平移,时间复杂度是O(N)。

相比之下,链表的插入和删除就很简单,时间复杂度是O(1),但是它查询速度慢,时间复杂度为O(N)。

所以就考虑到,能不能找到一种数据结构,即满足查询快,又满足增删快?有,就是二叉搜索树,搜索就是二分查找的思路,小于当前节点的往左子树找,大于节点的往右子树找。增删就通过左右子树增删数据。

但是,如果增加的数据一直挂在右子树或者左子树上,二叉搜索树就变成了一个单链表,查找效率就递减。

这个时候就需要红黑树出场了,它会对如上不平衡的结构进行处理,将一些节点移动到左边,在保证搜索效率的同时,还能保证增删的效率。相当于兼具二者的优势 

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

相关文章:

  • Ansible入门—安装部署及各个模块应用案例(超详细)
  • Spring Boot 3系列之-启动类详解
  • muduo源码剖析之Timer定时器
  • CocosCreator:背景滚动 、背景循环滚动
  • 中远麒麟堡垒机SQL注入漏洞复现
  • ActiveMq学习⑨__基于zookeeper和LevelDB搭建ActiveMQ集群
  • Ansible概述以及模块
  • Cannot run program “D:\c\IntelliJ IDEA 2021.1.3\jbr\bin\java.exe“
  • 案例-注册页面(css)
  • Ansible--playbook 剧本
  • Vue3.0路由拦截
  • EtherCAT转EtherNET/IP协议网关控制EtherCAT伺服驱动器的方法
  • 钉钉内嵌H5遇到的一些问题
  • LeetCode 热题100——链表专题(二)
  • 【Rust日报】2023-11-06 ESP上使用 Rust实现 SNTP协议
  • LibreOJ - 2874 历史研究 (回滚莫队)
  • 人工智能-卷积神经网络之多输入多输出通道
  • Open3D(C++) Umeyama算法求两个点云的变换矩阵
  • 【C++】从入门到精通第二弹——类的构造与析构函数
  • C#8.0本质论第十一章--异常处理
  • FPGA高端项目:图像缩放+GTP+UDP架构,高速接口以太网视频传输,提供2套工程源码加QT上位机源码和技术支持
  • ansible安装和常见模块
  • 【Python基础】 Python设计模式之单例模式介绍
  • 算法小白的心得笔记:关于Nan
  • Photoshop 2023 v24.7
  • 进程间通信(IPC)-管道、消息队列、信号量、共享存储、socket
  • 「Verilog学习笔记」使用generate…for语句简化代码
  • 互联网Java工程师面试题·Spring篇·第七弹
  • mysql驱动包引起的告警问题using SSL the verifyServerCertificate property is set to ‘false‘
  • draw.io与项目管理——如何利用流程图工具提高项目管理效率