JavaScript 红黑树

本文介绍了红黑树作为平衡二叉搜索树的特性和优势,详细阐述了红黑树的平衡规则、插入操作的分析及调整策略,包括变色、左旋、右旋等,以确保树的相对平衡并保持O(logN)的时间复杂度。
摘要由CSDN通过智能技术生成

一、树的平衡性

  •  为了能以较快的时间O(logN)来操作一棵树,我们需要保证树总是平衡的:
    • 至少大部分是平衡的,那么时间复杂度也是接近O(logN)的
    • 也就是说树中每个节点左边的子孙节点的个数应该尽可能的等于右边的子孙节点的个数.
    • 常见的平衡树有哪些呢?
  • AVL树:
    • AVL树是最早的一种平衡树.它有些办法保持树的平衡(每个节点多存储了一个额外的数据)
    • 因为AVL树是平衡的,所以时间复杂度也是O(IogN).
    • 但是,每次插入/删除操作相对于红黑树效率都不高,所以整体效率不如红黑树
  • 红黑树:
    • 红黑树也通过一些特性来保持树的平衡.
    • 因为是平衡树,所以时间复杂度也是在O(logN).
    • 另外插入/删除等操作,红黑树的性能要优于AVL树,所以现在平衡树的应用基本都是红黑树.

二、认识红黑树 

红黑树的规则 

  •  红黑树,除了符合二叉搜索树的基本规则外,还添加了一下特性: 
  1. 节点是红色或黑色。
  2. .根节点是黑色。 
  3. 每个叶子节点都是黑色的空节点(NIL节点)。
  4. 每个红色节点的两个子节点都是黑色。(从每个叶子到根的所有路径上不能有两个连续的红色节点)
  5. 从任一节点到其每个叶子的所有路径都包含相同数目的黑色节点。

 这些规则会让人一头雾水
        完成搞不懂规则叠加起来,怎么让一棵树平衡的.
        但是它们还是被一些聪明的人发明出来了. 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值