当前位置: 首页 > 知识库问答 >
问题:

红黑树是否平衡

郗奇玮
2023-03-14

在我把数字“6”插入树之前,一切都很好。根据伪代码,我得到以下结果

正如你所看到的,所有红黑树的要求都得到了满足,但是我很困惑,因为我知道红黑树在每一步都应该是平衡的。

我可以用“2”和“4”手动执行“左旋转”程序并更改颜色。在这种情况下,我将得到以下结果,该结果是适当平衡的

所以我的问题是:

有不平衡的树可以吗?,或者我在插入节点期间错过了一些东西?

共有2个答案

丘智志
2023-03-14

它们不是平衡的,因为它们不满足平衡树属性:

如果对于每个节点,左子树中的内部节点数和右子树中的节点数相差最多1,则二叉树是平衡的。

有些书称之为“近似平衡”,因为保证了对数时间的添加/删除/搜索操作。(平衡树是AVL树。)

曾景龙
2023-03-14

这很好。红黑树是平衡的,但不一定是完美的。准确地说,红黑树的属性保证到叶子的最长路径(隐含的,没有显示在你的图片中)最多是最短路径的两倍。最短的一个长度为2(2-

 类似资料:
  • 红黑树与AVL的比较: AVL是严格平衡树,因此在增加或者删除节点的时候,根据不同情况,旋转的次数比红黑树要多; 红黑是用非严格的平衡来换取增删节点时候旋转次数的降低; 所以简单说,如果你的应用中,搜索的次数远远大于插入和删除,那么选择AVL,如果搜索,插入删除次数几乎差不多,应该选择RB。 红黑树详解: https://xieguanglei.github.io/blog/post/red-bl

  • 二叉查找树 由于红黑树本质上就是一棵二叉查找树,所以在了解红黑树之前,咱们先来看下二叉查找树。 二叉查找树(Binary Search Tree),也称有序二叉树(ordered binary tree),排序二叉树(sorted binary tree),是指一棵空树或者具有下列性质的二叉树: 若任意结点的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若任意结点的右子树不空,则右子树

  • hashMap红黑树是校招面试常见的考点之一,比如经典的试题 “为什么hashMap底层结构用红黑树而不用平衡二叉数呢”。 前两天,我们面试了一个实习生,先问项目的部分,但是这个同学的项目准备的不是很好,我们就说这个水平估计过不了,学生着急了,说这个八股文和hashMap红黑树都准备了很多。 那我紧接着就问了一个红黑树的问题。我说hashMap底层的结构用了红黑树,为什么这个底层结构用红黑树而不用

  • 本文向大家介绍图解红黑树及Java进行红黑二叉树遍历的方法,包括了图解红黑树及Java进行红黑二叉树遍历的方法的使用技巧和注意事项,需要的朋友参考一下 红黑树 红黑树是一种数据结构与算法课堂上常常提到但又不会细讲的树,也是技术面试中经常被问到的树,然而无论是书上还是网上的资料,通常都比较刻板难以理解,能不能一种比较直观的方式来理解红黑树呢?本文将以图形的方式来解释红黑树的插入与删除操作。 对树结构

  • 本文向大家介绍请问红黑树了解吗?相关面试题,主要包含被问及请问红黑树了解吗?时的应答技巧和注意事项,需要的朋友参考一下 参考回答: 参考博客https://blog.csdn.net/tanrui519521/article/details/80980135

  • 本文向大家介绍请介绍一下红黑树?相关面试题,主要包含被问及请介绍一下红黑树?时的应答技巧和注意事项,需要的朋友参考一下 参考回答: 红黑树(Red Black Tree)是一种自平衡二叉查找树,是在计算机科学中用到的一种数据结构,典型的用途是实现关联数组。红黑树和AVL树类似,都是在进行插入和删除操作时通过特定操作保持二叉查找树的平衡,从而获得较高的查找性能。 它虽然是复杂的,但它的最坏情况运行时

  • 本文向大家介绍数据结构之红黑树详解,包括了数据结构之红黑树详解的使用技巧和注意事项,需要的朋友参考一下 1.简介 红黑树是一种自平衡二叉查找树。它的统计性能要好于平衡二叉树(AVL树),因此,红黑树在很多地方都有应用。在C++ STL中,很多部分(目前包括set, multiset, map, multimap)应用了红黑树的变体(SGI STL中的红黑树有一些变化,这些修改提供了更好的性能,以及

  • 我实现了下面的C代码,以检查二叉树是否平衡,即左右子树的高度相差最多1。但是,我不确定它是否有效,或者以错误的方式重复检查子树。有人能引导我吗?