红黑树

什么是“平衡二叉查找树”?

二叉树中任意一个节点的左右子树的高度相差不能大于1。
平衡二叉查找树中“平衡”的意思,其实就是让整棵树左右看起来比较“对称”、比较“平衡”,不要出现左子树很高、右子树很矮的情况。这样就能让整棵树的高度相对来说低一些,相应的插入、删除、查找等操作的效率高一些。

如何定义一颗“红黑树”?

  • 根节点是黑色的;
  • 每个叶子节点都是黑色的空节点(NIL),也就是说 叶子节点不存储数据;
  • 任何相邻的节点都不能同时为红色,也就是说,红色节点是被黑色节点隔开的;
  • 每个节点,从该节点到达可达叶子节点的所有路径,都包含相同数目的黑色节点;


    红黑树

问题引出:为什么工程中都喜欢用红黑树,而不是其他平衡二叉查找树呢?

AVL树(平衡查找二叉树)是一种高度平衡的二叉树,所以查询的效率非常高,但是,有利有弊,AVL树为维持这种高度的平衡,就要付出更多的代价。每次插入、删除都要做调整,就比较复杂、耗时。
而红黑树只是做到了近似平衡,并不是严格的平衡,所以在维护平衡的成本上,要比AVL树要低。红黑树的插入、删除、查找各种操作性能都比较稳定,其时间复杂度都为O(logn)。符合工业级工程的要求。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 树(tree)的基本知识 一.定义 树是一种抽象数据类型,或是实作这种抽象数据类型的数据结构,用来模拟具有树状结构...
    337b94dc718f阅读 7,317评论 3 42
  • 前言 前段时间在研究 JDK1.8 的 hashmap 源码,看到 put 方法的插入环节,遇到了红黑树,不得不停...
    Java架构学习者阅读 1,599评论 0 0
  • 张公意气昂, 公赠好食粮。 文阐开州史, 毫驰林坝郎。 独研不朽事, 冠下李桃芳。 开邑文昌问? 州中诗韵扬。
    渝巴山子阅读 336评论 1 1
  • 今天 今天贼顺利 什么都顺 因为什么都不介意哈哈
    一心小茶客阅读 178评论 0 0
  • 近来长沙的天气越发凉爽,并夹带些许冷意,不免让人穿上了厚厚的外套。昨晚,我洗完澡回到房间,看到三位室友在吃着老干妈...
    白小白0202阅读 604评论 0 0