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

改写有序表的题目核心点

1、核心点

1)分析增加什么数据项可以支持题目

2)有序表一定要保持内部参与排序的key不重复

【补充说明:要存储重复的key值,要么将相同的key压在一起,要么将每个key再封装一层,用内存地址区分】

3)增加这个数据项了,在平衡性调整时,保证这个数据项也能更新正确

4)做到上面3点,剩下就是搜索二叉树怎么实现想要的接口的问题了

2、浅谈红黑树

红黑树的五个条件:

  1. 每个节点非黑即红;
  2. 根节点是黑色;
  3. 叶节点(NIL)是黑色【虚拟空节点,并不是看得见的叶子节点】
  4. 如果一个节点是红色,则它的两个子节点是黑色的;
  5. 从根节点触发到所有叶节点的路径上,黑色节点数量相同。

先回忆AVL树和SB树的平衡条件:

  • AVL树左右子树的高度差不超过1,是非常严苛的平衡;
  • SB树中每棵子树的大小不小于其兄弟的子树大小,其实质就是保证了较少节点的子树和较多节点的子树的节点数量差不超过两倍,是模糊的平衡性。

而结合红黑树的第4和5个条件,也就是红黑树最长路径和最短路径之间的关系是:最长路径=2×最短路径最长路径 = 2 \times 最短路径最长路径=2×最短路径

可见,红黑树本质上也是用树高来控制平衡,但是相比AVL树控制得更松散,依然是模糊的平衡性,目的和SB树一样,减少频繁地调整,内存IO消耗较低。

了解了之前AVL树和SB树的平衡调整,红黑树的平衡调整也是类似的。

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

相关文章:

  • 收藏这几个开源管理系统做项目,领导看了直呼牛X!
  • 【刷题篇】链表(下)
  • Shiro
  • 使用nginx进行负载均衡配置详细说明
  • N皇后问题
  • 强化学习DQN之俄罗斯方块
  • 1.3总线:并行总线、串行总线、单工、半双工、全双工、总线宽度、总线带宽、总线的分类、数据总线、地址总线、控制总线
  • Linux驱动开发—设备树开发详解
  • 深入浅出C++ ——继承
  • 设计模式C++实现20: 桥接模式(Bridge)
  • Android中的Rxjava
  • 【RocketMQ】源码详解:消息储存服务加载、文件恢复、异常恢复
  • 数字IC设计工程师是做什么的?
  • 【040】134. 加油站[简单模拟 + 逻辑转化]
  • Python用selenium实现自动登录和下单的脚本
  • (02)Cartographer源码无死角解析-(55) 2D后端优化→AppendNode()、class MapById、 PoseGraphData、
  • 如何在jmeter中把响应中的数据提取出来并引用
  • 2023环翠区编程挑战赛中学组题解
  • 手撸一个Switch开关组件
  • 2023年1月冰箱品牌销量排行:销量环比增长26%,销售额36亿+
  • DSP CCS 开发问题总结及解决办法
  • Vue3.x+Element Plus仿制Acro Design简洁模式分页器组件
  • 经典文献阅读之--VoxelMap(体素激光里程计)
  • .NET6中使用GRPC详细描述
  • ML@矩阵微积分基础
  • 华为OD机试真题Python实现【优秀学员统计】真题+解题思路+代码(20222023)
  • docsify在线文档支持pdf查看
  • ES6中Set类型的基本使用
  • 【VUE3.0_CSS功能】
  • 微机原理复习总结6:汇编语言程序设计