二叉查找树  (Binary Search Tree)

查找最好时间复杂度O(logN),最坏时间复杂度O(N)。

插入删除操作算法简单,时间复杂度与查找差不多

平衡二叉查找树 ( Balanced Binary Search Tree ) 

查找的时间复杂度维持在O(logN),不会出现最差情况

AVL树在执行每个插入操作时最多需要1次旋转,其时间复杂度在O(logN)左右。

AVL树在执行删除时代价稍大,执行每个删除操作的时间复杂度需要O(2logN)。

红黑树(Red-Black Tree)

查找 效率最好情况下时间复杂度为O(logN),但在最坏情况下比AVL要差一些,但也远远好于BST。

插入和删除操作改变树的平衡性的概率要远远小于AVL(RBT不是高度平衡的)。因此需要的旋转操作的可能性要小,而且一旦需要旋转,插入一个结点最多只需要旋转2次,删除最多只需要旋转3次(小于AVL的删除操作所需要的旋转次数)。虽然变色操作的时间复杂度在O(logN),但是实际上,这种操作由于简单所需要的代价很小。

红黑树的几个特性:

(1) 每个节点或者是黑色,或者是红色。
(2) 根节点是黑色。
(3) 每个叶子节点是黑色。 [注意:这里叶子节点,是指子节点为空的节点!]
(4) 如果一个节点是红色的,则它的子节点必须是黑色的。
(5) 从一个节点到该节点的子孙节点的所有路径上包含相同数目的黑节点。

ref: http://hxraid.iteye.com/blog/614070

转载于:https://www.cnblogs.com/awiki/p/7352792.html

树——常用的数据结构相关推荐

  1. 【算法】常用的数据结构与算法

    学习了王争老师的数据结构与算法之美之后,比较有感触,他把我们常用的数据结构和算法都讲了一遍,而且讲的还不错.整理汇总一下作为笔记. 一.复杂度分析 非常重要.我们必须掌握,基本上要做到,简单代码能很快 ...

  2. 【算法基础】常用的数据结构与算法

    学习了王争老师的数据结构与算法之美之后,比较有感触,他把我们常用的数据结构和算法都讲了一遍,而且讲的还不错.整理汇总一下作为笔记. 一.复杂度分析 非常重要.我们必须掌握,基本上要做到,简单代码能很快 ...

  3. 【算法入门】动态图展示 6 个常用的数据结构,一目了然!

    数据结构的确很枯燥,尤其是初学时候,不知道到底有啥用.不过随着编码年限的增长,我们越会发现它真的很有用,巧妙的数据结构是算法高效实现的助推剂. 今天的文章不会用文字和静态图展现常用的数据结构,因为这种 ...

  4. 常用的数据结构_动态图展示 6 个常用的数据结构,一目了然

    数据结构的确很枯燥,尤其是初学时候,不知道到底有啥用.不过随着编码年限的增长,我们越会发现它真的很有用,巧妙的数据结构是算法高效实现的助推剂. 今天的文章不会用文字和静态图展现常用的数据结构,因为这种 ...

  5. Python3实现常用的数据结构

    Python3实现常用的数据结构 之前学习Python的时候当做练习的代码.实现了栈.队列.树.图等的常用数据结构,并给出了一些常用算法,比如BFS.DFS.最短路等. Github链接:https: ...

  6. 游戏制作中的大宝剑---常用的数据结构与算法

    前言 时间流逝,物是人非,就好像涌动的河流,永无终焉,幼稚的心智将变得高尚,青年的爱慕将变得深刻,清澈之水折射着成长. ----------<塞尔塔传说> PS:为了方便大家阅读,个人认为 ...

  7. 一篇关于 JS 常用的数据结构与算法万字总结

    一.前言 首先,为什么我会学习数据结构与算法呢,其实主要是有两方面 第一,是我在今年的flag里明确说到我会学这个东西 第二,学了这些,对自己以后在工作或者面试也会带来许多好处 然后,本文是最近学习的 ...

  8. 游戏开发中常用的数据结构和算法

    转载Loving_初衷 前言 时间流逝,物是人非,就好像涌动的河流,永无终焉,幼稚的心智将变得高尚,青年的爱慕将变得深刻,清澈之水折射着成长. ----------<塞尔塔传说> PS:为 ...

  9. 数据结构专题—计算机中常用的数据结构

    前言: 在学习 java 相关技术或者学习mysql 存储引擎 InnoDB 的时候,会发现其底层运用了大量的数据结构.之所以不从java这门语言来展开讲数据结构是因为:数据结构是不分语言不分平台的. ...

最新文章

  1. 社区拼团软件系统开发为什么这么火热?
  2. python导入pandas具体步骤方法_python导入pandas具体步骤方法-
  3. 数据库oracle 别名不能更新,数据库oracle改成mysql后Hibernate不能使用别名问题
  4. java6 已安装更高版本_Java 10及更高版本的思考
  5. 使用CreateFile读写文件
  6. SVG(可扩展矢量图)系列教程
  7. PHP初级面试题收集
  8. 区块链的可视化:hash,block,blockchain,distributed,tokens,coinbase
  9. Stream,byte[],LZMA
  10. WPS和office办公软件的word同时存在时,想用office的word的解决办法
  11. python+selenium+chrome实现淘宝购物车秒杀自动结算
  12. Lumerical MODE solution FBG光栅透射谱的仿真,官网fbg.lms例子的详解
  13. 【jquery Ajax 练习】图书管理
  14. linux cadaver 命令,【Linux学习第三篇】[Tab].[Ctrl]-c.[Ctrl]-d
  15. KNIME Python Integration安装配置指南
  16. 穹顶之下的出行利器:百度地图热力
  17. 来拿,腾讯数据开发整理的用户留存分析(超详细)
  18. 快讯:湘江实验室在长沙揭牌成立;中国移动算网升级3AZ重磅发布
  19. 12个必不可少的Firefox插件
  20. 张俊林:由ChatGPT反思大语言模型(LLM)的技术精要

热门文章

  1. c语言源程序的下载,编程(C语言源程序代码)
  2. React Native布局详细指南
  3. 全套学习!dockerpull的镜像位置
  4. 【PAT (Advanced Level) Practice】1051 Pop Sequence (25 分)
  5. 【深度学习】Swin-Unet图像分割网络解析(文末提供剪枝仓库)
  6. python【数据结构与算法】01背包问题(附例题)
  7. 【Web安全】关于SQL注入简介以及使用SqlMap获取管理员密码的探索
  8. 【Deep Learning笔记】一个很好的神经网络相关定义(看不懂你来打我)
  9. springboot使用Thymeleaf引入html文件
  10. 网站推广——专业网站推广浅析企业网站排名有哪些影响因素?