二叉查找树:

二叉查找树就是左结点小于根节点,右结点大于根节点的一种排序树,也叫二叉搜索树。也叫BST。二叉查找树比普通树查找更快,查找、插入、删除的时间复杂度为O(logN)。但是二叉查找树有一种极端的情况,就是会变成一种线性链表似的结构。此时时间复杂度就变味了O(N)。(为了解决这种情况,出现了二叉平衡树)

平衡二叉树:

平衡二叉树全称平衡二叉搜索树,也叫AVL树。是一种自平衡的树

AVL树也规定了左结点小于根节点,右结点大于根节点。并且还规定了左子树和右子树的高度差不得超过1。这样保证了它不会成为线性的链表。AVL树的查找稳定,查找、插入、删除的时间复杂度都为O(logN),但是由于要维持自身的平衡,所以进行插入和删除结点操作的时候,需要对结点进行频繁的旋转

AVL树每一个节点只能存放一个元素,并且每个节点只有两个子节点。当进行查找时,就需要多次磁盘IO,(数据是存放在磁盘中的,每次查询是将磁盘中的一页数据加入内存,树的每一层节点存放在一页中,不同层数据存放在不同页。)这样如果需要多层查询就需要多次磁盘IO。为了解决AVL树的这个问题,就出现了B树

为什么B类树可以进行优化呢?我们可以根据B类树的特点,构造一个多阶的B类树,然后在尽量多的在结点上存储相关的信息,保证层数尽量的少,以便后面我们可以更快的找到信息,磁盘的I/O操作也少一些,而且B类树是平衡树,每个结点到叶子结点的高度都是相同,这也保证了每个查询是稳定的。

红黑树:

红黑树也叫RB树,RB-Tree。是一种自平衡的二叉查找树,它的节点的颜色为红色和黑色。它不严格控制左、右子树高度或节点数之差小于等于1。也是一种解决二叉查找树极端情况的数据结构。

红黑树规定了:

1.节点是红色或黑色。

2.根节点是黑色

3.每个叶子节点都是黑色的空节点(NIL节点)。

4 每个红色节点的两个子节点都是黑色。也就是说从每个叶子到根的所有路径上不能有两个连续的红色节点)。

5.从任一节点到其每个叶子的所有路径都包含相同数目的黑色节点

红黑树在查找方面和AVL树操作几乎相同。但是在插入和删除操作上,AVL树每次插入删除会进行大量的平衡度计算,红黑树是牺牲了严格的高度平衡的优越条件为代价,它只要求部分地达到平衡要求,结合变色,降低了对旋转的要求,从而提高了性能。红黑树能够以O(log2 n)的时间复杂度进行搜索、插入、删除操作。此外,由于它的设计,任何不平衡都会在三次旋转之内解决。

相比于BST,因为红黑树可以能确保树的最长路径不大于两倍的最短路径的长度,所以可以看出它的查找效果是有最低保证的。在最坏的情况下也可以保证O(logN)的,这是要好于二叉查找树的。因为二叉查找树最坏情况可以让查找达到O(N)。

红黑树的算法时间复杂度和AVL相同,但统计性能比AVL树更高,所以在插入和删除中所做的后期维护操作肯定会比红黑树要耗时好多,但是他们的查找效率都是O(logN),所以红黑树应用还是高于AVL树的. 实际上插入 AVL 树和红黑树的速度取决于你所插入的数据.如果你的数据分布较好,则比较宜于采用 AVL树(例如随机产生系列数),但是如果你想处理比较杂乱的情况,则红黑树是比较快的。

AVL树和红黑树区别相关推荐

  1. 平衡二叉树(AVL树)和红黑树区别

    1.二叉搜索树,平衡二叉树,红黑树的算法效率 操作 二叉查找树 平衡二叉树 红黑树 查找 O(n) O(logn) O(log2 n) 插入 O(n) O(logn) O(log2 n) 删除 O(n ...

  2. B树,B+树,红黑树应用场景AVL树,红黑树,B树,B+树,Trie树

    B B+运用在file system database这类持续存储结构,同样能保持lon(n)的插入与查询,也需要额外的平衡调节.像mysql的数据库定义是可以指定B+ 索引还是hash索引. C++ ...

  3. 讲透学烂二叉树(五):分支平衡—AVL树与红黑树伸展树自平衡

    简叙二叉树 二叉树的最大优点的就是查找效率高,在二叉排序树中查找一个结点的平均时间复杂度是O(log₂N): 在<讲透学烂二叉树(二):树与二叉/搜索/平衡等树的概念与特征>提到 二叉排序 ...

  4. 二叉排序树、AVL树、红黑树、B树、B+树、Hash树、

    二叉排序树 1.基本应用 二叉排序树也称为也叫二叉查找树,二叉搜索树, BST. 满足二叉查找树的一般性质,是指一棵空树具有如下性质: 对于二叉树中的任何一个非叶子节点,要求左子节点比当前节点值小,右 ...

  5. B树、B+树、AVL树、红黑树

    from: http://blog.csdn.net/chlele0105/article/details/8473846 binary search tree,中文翻译为二叉搜索树.二叉查找树或者二 ...

  6. 浅谈二叉查找树、AVL树、红黑树、B树、B+树的原理及应用

    一.二叉查找树 1.简介 二叉查找树也称为有序二叉查找树,满足二叉查找树的一般性质,是指一棵空树具有如下性质: 任意节点左子树不为空,则左子树的值均小于根节点的值. 任意节点右子树不为空,则右子树的值 ...

  7. 对AVL树和红黑树的个人理解

    都说编程算法很重要,可真没见几个.NET程序员研究算法的.这些日子非主流地研究了一些小算法,红黑树和AVL树算是其中复杂的了,但实际也就二三百行代码.悲催的是,网上根本找不到C#的理想版本(包括国外网 ...

  8. 种树:二叉树、二叉搜索树、AVL树、红黑树、哈夫曼树、B树、树与森林

    虽然今天不是植树节,但是我今天想种树. 文章目录 树,什么是树? 二叉树 定义 二叉树的创建 二叉树的前中后序遍历 前序遍历: 中序遍历 后序遍历 已知前序.中序遍历结果,还原二叉树 已知后序.中序遍 ...

  9. 总结下各种常见树形结构的定义及特点(二叉树、AVL树、红黑树、Trie树、B树、B+树)

    文章目录 前言 一棵普通的树 相关术语 二叉树 二叉树性质 二叉树特例 二叉查找树 AVL树 特点及应用 红黑树 特点 应用 Trie树 特点及应用 B树 定义及特点 应用 B+树 B+树的优势及应用 ...

最新文章

  1. 15 个 JavaScript Web UI 库 (转)
  2. [POJ1741]Tree
  3. HTTP/3 来啦,你还在等什么?赶紧了解一下
  4. 从零开始学习Sencha Touch MVC应用之十九
  5. 第25月第2天 Django-By-Example项目记录01
  6. php导出excel时间错误(同一个时间戳,用date得到不同的时间)
  7. linux openssh升级8.1,Centos7利用rpm升级OpenSSH到openssh-8.1p1版本
  8. Hive与数据库的异同
  9. kotlin 反射java类_Android Kotlin的Class、反射、泛型
  10. uBLAS——Boost 线性代数基础程序库 (二)
  11. tomcat利用setenv对内存的限制和docker中tomcat内存的优雅配置
  12. java nio 下载网页_JavaNIO 下载网络文件保存本地报java.nio.file.AccessDeniedException:无权限操作...
  13. 使用Mac的十大最好用神器
  14. JAVA面向对象 从0.5到1
  15. 电影《战狼》评论词云分析
  16. 雷啊:淘宝上卖F22战斗机
  17. 内存规格的解释(Unbuffered DIMM,Registered DIMM和SODIMM)
  18. [Audacity][帮助手册][手册内容]认识Audacity
  19. 《Java 开发手册》重磅发布,向全球开发者致敬!
  20. 计算机常见故障任务书,CAK6132A数控车床常见故障诊断与处理任务书.doc

热门文章

  1. 《剑指offer》第四十九题(丑数)
  2. 初学Python——RabbitMQ的安装
  3. 计算机设计思想 —— 代理(proxy)
  4. shell脚本--字符串处理和动态数组
  5. eclipse配置了maven,项目报错
  6. 使用C#调用Python脚本,带参数列表
  7. 两台Oracle服务器,使用udl测试连接
  8. OpenGL初学时遇到的一些常见的函数之解析
  9. 实现不是三角形尾巴的气泡框
  10. 死在“风口上的猪”人工智能初创企业倒闭的原因分析