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

二叉查找树和红黑树

二叉搜索树又叫二叉查找树、二叉排序树,我们先看一下典型的二叉搜索树,这样的二叉树有何规则特点呢?

1.节点的左子树小于节点本身;

2.节点的右子树大于节点本身;

3.左右子树同样为二叉搜索树;

下图就是一颗典型的二叉搜索树

这种二叉搜索树好像查找效率很高,但同样它也有缺陷,如下面这样的二叉搜索树。

看到这样的二叉搜索树是否很别扭,典型的大长腿瘸子,但它也是二叉搜索树,如果我们要找值为50的节点,基本上和单链表查询没多大区别了,性能将大打折扣。这个时候我们的均衡二叉树就粉墨登场了,均衡二叉树就是在二叉搜索树的基础上添加了自动维持平衡的性质。

上面的大长腿瘸子二叉搜索树经过自动平衡后,可能就成为了下面这样的二叉树。

经过了自动平衡,再去找值为50的节点,查找性能将提升很多。红黑树就是非严格均衡的二叉搜索树。

红黑树规则特点

红黑树具体有哪些规则特点呢?

1.节点分为红色或者黑色;

2.根节点必为黑色;

3.叶子节点都为黑色,且为null;

4.连接红色节点的两个子节点都为黑色(红黑树不会出现相邻的红色节点);

5.从任意节点出发,到其每个叶子节点的路径中包含相同数量的黑色节点;

6.新加入到红黑树的节点为红色节点;

规则看着好像挺多,没错,因为红黑树也是均衡二叉树,需要具备自动维持平衡的性质,上面的6条就是红黑树给出的自动维持平衡所需要具备的规则

首先解读一下规则,除了字面上看到的意思,还隐藏了哪些意思呢?

第一. 从根节点到叶子节点的最长路径不大于最短路径的2倍

怎么样的路径算最短路径?

从规则5中,我们知道从根节点到每个叶子节点的黑色节点数量是一样的,那么纯由黑色节点组成的路径就是最短路径;

什么样的路径算是最长路径?

根据规则4和规则3,若有红色节点,则必然有一个连接的黑色节点,当红色节点和黑色节点数量相同时,就是最长路径,也就是黑色节点(或红色节点)* 2

从规则4中知道,当前红黑树中从根节点到每个叶子节点的黑色节点数量是一样的,此时假如新的黑色节点的话,必然破坏规则,但加入红色节点却不一定,除非其父节点就是红色节点,因此加入红色节点,破坏规则的可能性小一些


http://www.kler.cn/news/156251.html

相关文章:

  • 卖家低价侵权了怎么处理
  • 一款自动帮你生成UI界面和代码的AI神器
  • MySQL练习题,学生成绩查询练习题,附带答案
  • JIRA部分数据库结构
  • Spring AOP解析
  • 基于Java SSM框架实现美好生活九宫格日志网站系统项目【项目源码+论文说明】
  • Docker push 命令
  • 在CentOS7下安装Docker与Docker Compose
  • 举例说明自然语言处理(NLP)技术。
  • 二分查找算法:搜索有序数组中目标元素的利器
  • 松下、书客、明基护眼台灯值不值得买?热门护眼台灯真实测评!
  • 客户销售目标拆解:数据驱动的方法和策略
  • 【LeeCode】142.环形链表II
  • 开启gitlab中远程连接pgsql
  • 燃料电池汽车市场分析:预计2028年将达到118亿美元
  • 前端需要掌握的技术有哪些方面
  • Kubernetes(K8s)Service详解-07
  • 【数电笔记】17-具体函数的卡诺图填入
  • 关于svn如何上传一个完整的项目
  • OpenAI发生的大事件总结!
  • 含mask的单通道灰度图内容可视化python
  • Android 10.0 状态栏系统图标显示分析
  • JS的空值合并运算符??与逻辑空赋值??=
  • 贝叶斯分类器(Bayesian Classifier)
  • 极智芯 | 解读国产AI算力 璧仞产品矩阵
  • 基于大语言模型的垂直领域知识问答系统流程学习
  • 【【ZYNQ-自定义IP核-IP核封装于接口定义实验】】
  • [Golang] 高频次和高并发下的随机数重复问题的解决方案
  • 35、AD模数转换DA数模转换
  • geemap学习笔记019:监督分类与精度验证(上)