红黑树 vs AVL
来源:互联网 发布:手机淘宝店铺名怎么改 编辑:程序博客网 时间:2024/06/04 18:18
红黑树
直接看wiki百科就好了,里面很好的;Go WIKI。
红黑树是每个节点都带有颜色属性的二叉查找树,颜色为红色或黑色。在二叉查找树强制一般要求以外,对于任何有效的红黑树我们增加了如下的额外要求:
性质1. 节点是红色或黑色。
性质2. 根是黑色。
性质3. 所有叶子都是黑色(叶子是NIL节点)。
性质4. 每个红色节点必须有两个黑色的子节点。(从每个叶子到根的所有路径上不能有两个连续的红色节点。)
性质5. 从任一节点到其每个叶子的所有简单路径都包含相同数目的黑色节点。
下面是一个具体的红黑树的图例:
这些约束确保了红黑树的关键特性: 从根到叶子的最长的可能路径不多于最短的可能路径的两倍长。结果是这个树大致上是平衡的。因为操作比如插入、删除和查找某个值的最坏情况时间都要求与树的高度成比例,这个在高度上的理论上限允许红黑树在最坏情况下都是高效的,而不同于普通的二叉查找树。
到性质4导致了路径不能有两个毗连的红色节点就足够了。最短的可能路径都是黑色节点,最长的可能路径有交替的红色和黑色节点。因为根据性质5所有最长的路径都有相同数目的黑色节点,这就表明了没有路径能多于任何其他路径的两倍长。
在很多树数据结构的表示中,一个节点有可能只有一个子节点,而叶子节点包含数据。用这种范例表示红黑树是可能的,但是这会改变一些性质并使算法复杂。为此,本文中我们使用 "nil 叶子" 或"空(null)叶子",如上图所示,它不包含数据而只充当树在此结束的指示。这些节点在绘图中经常被省略,导致了这些树好像同上述原则相矛盾,而实际上不是这样。与此有关的结论是所有节点都有两个子节点,尽管其中的一个或两个可能是空叶子。
见GO_WIKI
在计算机科学中,AVL树是最先发明的自平衡二叉查找树。在AVL树中任何节点的两个子树的高度最大差别为一,所以它也被称为高度平衡树。查找、插入和删除在平均和最坏情况下都是O(log n)。增加和删除可能需要通过一次或多次树旋转来重新平衡这个树。AVL树得名于它的发明者G.M. Adelson-Velsky和E.M. Landis,他们在1962年的论文《An algorithm for the organization of information》中发表了它。
节点的平衡因子是它的左子树的高度减去它的右子树的高度(有时相反)。带有平衡因子1、0或 -1的节点被认为是平衡的。带有平衡因子 -2或2的节点被认为是不平衡的,并需要重新平衡这个树。平衡因子可以直接存储在每个节点中,或从可能存储在节点中的子树高度计算出来。
- 红黑树 VS AVL树
- AVL树 VS 红黑树
- 红黑树 vs AVL
- 红黑树 VS AVL树
- AVL 树 VS红黑树
- 红黑树 VS AVL树
- 【半ZZ】红黑树 VS AVL树
- 【半ZZ】红黑树 VS AVL树
- RBT VS. AVL
- 自平衡二叉搜索树:红黑树 VS AVL树
- RB tree VS AVL tree
- r-b tree vs avl
- AVL 树与红黑树
- avl与红黑树
- 红黑树和AVL树
- AVL树、红黑树
- 红黑树和AVL树
- 红黑树与AVL树
- GO语言UDP小笔记
- 用java制作的简易倒计时器(主要可用于考试系统中考试剩余时间显示)
- JAVA base64
- Ray Wenderlich的swift教程04--布局,添加图片,音频
- 1.1、开启一个子线程,发送短信
- 红黑树 vs AVL
- Java抛出异常
- Android的shape使用
- java 调用 库文件错误查找方法
- 神奇效果
- tomcat(错误三) 解决启动报错问题三
- 文本分类方面
- VS中的路径宏 vc++中OutDir、ProjectDir、SolutionDir各种路径
- UNIX网络编程2 理解select、poll、epoll原理