1 二叉排序树/二叉查找树/Binary Sort Tree

  • 1种对排序和查找都很有用的特殊二叉树
  • 叉排序树的弊端的解决方案:平衡二叉树
  • 二叉排序树必须满足的3条性质(或是具有如下特征的二叉树)
    • 若它的左子树不为空,则:左子树上所有结点的值< 它根结点的值
    • 若它的右子树不为空,则:右子树上所有结点的值 > 它根结点的值
    • 它的左子树、右子树也分别为二叉排序树(递归性)

(按照如上定义,即:

1 无键值相等的结点

2 中序遍历一颗二叉树时,可得一个结点值递增的有序序列)

2 平衡二叉排序树/Balanced Binary Tree/Adelson-Velskii & Landis

  • 1种结构平衡的二叉搜索树(即 叶节点高度差的绝对值不超过1)
  • 平衡因子:AVL树中左子树与右子树的深度之差只能为-1、0、1
  • AVL树的平衡调整方法:LL、RR、LR、RL(为了保证平衡,需付出一定代价)
  • 平衡二叉树的3条性质:(AVL树or空树,或是具有如下特征的二叉排序树(BST))
    • 左子树必须为平衡二叉树
    • 右子树必须为平衡二叉树
    • |左子树深度-右子树深度|≤1

3 B树


  • 1种平衡的多路搜索树,多用于文件系统、数据库的实现
  • 缺点
    • 在查询单条数据是非常快的。但如果范围查的话,b树每次都要从根节点查询一遍。
  • 提出者
    • 最早是由德国计算机科学家Rudolf Bayer等人于1972年在论文 《Organization and Maintenance of Large Ordered Indexes》提出的
  • 结点的结构图↓

  • 1棵m阶的B树,或为空树,或为满足下列特性的m叉树:

    • 若根结点不是叶子结点,则:有≥2棵子树
    • 树中每个结点有≤m棵子树 (m叉树的性质)
    • 所有的非终端结点有≤m-1个关键字。
    • 除根结点外的所有非终端结点有≥「m/2」棵子树
    • 所有的叶子结点都出现在同一层次上,并且不带信息(即 失败结点)

(实质上,失败结点并不存在,指向此类结点的指针为空,引入失败结点是为便于分析B树的查找性能)

4 B+树

  • 1种B树的变形树,更适合用于文件索引系统。
  • 实际应用:MySQL的存储引擎InnoDB/MyISAM均利用B+树建立索引。(MYSQL-Console:SHOW INDEX FROM tableName)
  • m阶B+树与m阶B树的差异
    • 含有n个关键字的结点必含有n棵子树;
    • 所有的【非叶子节点/非终端结点】:可看成是索引部分,结点中仅含有其子树(根结点)中的最大(或最小)关键字
    • 所有的【叶子结点/终端节点】:包含了全部关键字的信息,以及指向含这些关键字记录的指针,且叶子结点本身依靠关键字的大小自小而大顺序连接;

5 红黑树/平衡二叉B树

  • 别称:平衡二叉B树,1种自平衡的二叉搜索树
  • 实际应用:HashMap等Java的JDK源码实现
  • 红黑树必须满足的5条性质
    • 节点必为Red or Black
    • 根节点必为Black
    • 叶子节点必为Black
    • Red节点的子节点(父节点)必为Black (即 从根节点到叶子节点的所有路径上不能有2个连续的Red节点)
    • 从任一节点到叶子节点的所有路径都包含相同数目的Black节点
  • 比起AVL树(平衡二叉树),红黑树的特点↓

文献

[数据结构]二叉搜索树(BST) VS 平衡二叉排序树(AVL) VS B树(平衡多路搜索树) VS B+树 VS 红黑树(平衡二叉B树)的更多相关文章

  1. 数据结构中很常见的各种树(BST二叉搜索树、AVL平衡二叉树、RBT红黑树、B-树、B+树、B*树)

    数据结构中常见的树(BST二叉搜索树.AVL平衡二叉树.RBT红黑树.B-树.B+树.B*树) 二叉排序树.平衡树.红黑树 红黑树----第四篇:一步一图一代码,一定要让你真正彻底明白红黑树 --- ...

  2. JDK1.8 HashMap$TreeNode.balanceInsertion 红黑树平衡插入

    红黑树介绍 1.节点是红色或黑色. 2.根节点是黑色. 3.每个叶子节点都是黑色的空节点(NIL节点). 4 每个红色节点的两个子节点都是黑色.(从每个叶子到根的所有路径上不能有两个连续的红色节点) ...

  3. 树形结构_红黑树:平衡2X 哈夫曼树:最优2X

    红黑树:平衡2X 哈夫曼树:最优2X 红黑树 :TreeSet.TreeMap 哈夫曼树 1. 将w1.w2.…,wn看成是有n 棵树的森林(每棵树仅有一个结点): 2. 在森林中选出根结点的权值最小 ...

  4. 数据结构中常见的树(BST二叉搜索树、AVL平衡二叉树、RBT红黑树、B-树、B+树、B*树)

    树 即二叉搜索树: 1.所有非叶子结点至多拥有两个儿子(Left和Right): 2.所有结点存储一个关键字: 非叶子结点的左指针指向小于其关键字的子树,右指针指向大于其关键字的子树: 如: BST树 ...

  5. 【数据结构05】红-黑树基础----二叉搜索树(Binary Search Tree)

    目录 1.二分法引言 2.二叉搜索树定义 3.二叉搜索树的CRUD 4.二叉搜索树的两种极端情况 5.二叉搜索树总结 前言 在[算法04]树与二叉树中,已经介绍过了关于树的一些基本概念以及二叉树的前中 ...

  6. Red Black Tree 红黑树 AVL trees 2-3 trees 2-3-4 trees B-trees Red-black trees Balanced search tree 平衡搜索树

    小结: 1.红黑树:典型的用途是实现关联数组 2.旋转 当我们在对红黑树进行插入和删除等操作时,对树做了修改,那么可能会违背红黑树的性质.为了保持红黑树的性质,我们可以通过对树进行旋转,即修改树中某些 ...

  7. 算法设计和数据结构学习_5(BST&AVL&红黑树简单介绍)

    前言: 节主要是给出BST,AVL和红黑树的C++代码,方便自己以后的查阅,其代码依旧是data structures and algorithm analysis in c++ (second ed ...

  8. 二叉排序树、平衡二叉树、B树&B+树、红黑树的设计动机、缺陷与应用场景

    之前面试时曾被问到"如果实现操作系统的线程调度应该采用什么数据结构?",因为我看过ucore的源码,知道ucore是采用斜堆的方式实现的,可以做到O(n)的插入.O(1)的查找.我 ...

  9. 单例模式,堆,BST,AVL树,红黑树

    单例模式 第一种(懒汉,线程不安全): public class Singleton { private static Singleton instance; private Singleton () ...

  10. BST&AVL&红黑树简单介绍

    (BST&AVL&红黑树简单介绍) 前言: 节主要是给出BST,AVL和红黑树的C++代码,方便自己以后的查阅,其代码依旧是data structures and algorithm ...

随机推荐

  1. python3GUI--天气预报小工具By:PyQt5(附源码)

    @ 目录 一.准备工作 二.预览 1.启动 2.添加城市 三.设计流程 1.UI设计(草图) 2.UI设计(QT设计师) 3.解释 四.源代码 五.总结 之前用tk写过一款python3GUI--天气 ...

  2. mybatis核心配置文件

    <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC ...

  3. java15配置环境后java_version无反应(不显示“不是内部或外部命令”)

    重新装了jdk15来使用eclipse 配置完环境变量之后打开cmd输入 java -version 好家伙,居然一点反映都没有, 然后傻乎乎的跑回去重新配置JAVA_HOME和path 还是没用,细 ...

  4. selenium+鼠标操作+键盘操作+下拉框+弹出框+滚动条+三种等待--代码

    鼠标操作 键盘操作 下拉框 弹出框 滚动条 1 from time import sleep 2 from selenium import webdriver 3 4 driver = webdriv ...

  5. python Queue(队列学习)

    Python 的Queue模块中提供了同步的.线程安全的队列类,包括FIFO(先入先出)队列Queue,LIFO(后入先出)队列LifoQueue,和优先级队列PriorityQueue.这些队列都实 ...

  6. C语言转义序列

    转义序列 含义 \a 报警(ANSIC) \b 退格 \f 换页 \n 换行 \r 回车 \t 水平制表符 \v 垂直制表符 \\ 反斜杆\ \' 单引号 \" 双引号 \? 问号 \0oo ...

  7. 实验二 K-近邻算法及应用

    博客班级 https://edu.cnblogs.com/campus/ahgc/machinelearning 作业要求 https://edu.cnblogs.com/campus/ahgc/ma ...

  8. linux 部署轻量级堡垒机Next Terminal

    对比 类似的开源堡垒机有 Teleport,Jumpserver,Next Terminal等等. Teleport 安全性最好,较轻量,但是对被管理资产不透明,纳管前需要双向认证,在资产设备上需额外 ...

  9. consul 服务注册与更新

    服务注册与发现是微服务架构中不可或缺的重要组件. 起初服务都是单节点的,不保障高可用性,也不考虑服务的压力承载,服务之间调用单纯的通过接口访问.直到后来出现了多个节点的分布式架构,起初的解决手段是在服 ...

  10. 记录一次MySQL主从同步

    主库配置 server-id=1log-bin=mysql-binbinlog_format=ROWbinlog_row_image=minimalbinlog-do-db=yjtb-cloud 解释 ...