当前位置:首页 > 家居 >

两兄弟房子怎么分左右(两兄弟分房子有左右吗)

来源:原点资讯(www.yd166.com)时间:2023-04-15 18:38:25作者:YD166手机阅读>>

千篇c/c 优质博文已整理地址:

大家应该都学过平衡二叉树(AVLTree),了解到AVL树的性质,其实平衡二叉树最大的作用就是查找,AVL树的查找、插入和删除在平均和最坏情况下都是O(logn)。AVL树的效率就是高在这个地方。如果在AVL树中插入或删除节点后,使得高度之差大于1。此时,AVL树的平衡状态就被破坏,它就不再是一棵二叉树;为了让它重新维持在一个平衡状态,就需要对其进行旋转处理, 那么创建一颗平衡二叉树的成本其实不小. 这个时候就有人开始思考,并且提出了红黑树的理论,红黑树在业界应用很广泛,比如 Java 中的 TreeMap,JDK 1.8 中的 HashMap、C STL 中的 map 均是基于红黑树结构实现的。那么红黑树到底比AVL树好在哪里?

1.红黑树简介

红黑树是一种自平衡的二叉查找树,是一种高效的查找树。它是由 Rudolf Bayer 于1978年发明,在当时被称为平衡二叉 B 树(symmetric binary B-trees)。后来,在1978年被 Leo J. Guibas 和 Robert Sedgewick 修改为如今的红黑树。红黑树具有良好的效率,它可在 O(logN) 时间内完成查找、增加、删除等操作。

2.为什么需要红黑树?

对于二叉搜索树,如果插入的数据是随机的,那么它就是接近平衡的二叉树,平衡的二叉树,它的操作效率(查询,插入,删除)效率较高,时间复杂度是O(logN)。但是可能会出现一种极端的情况,那就是插入的数据是有序的(递增或者递减),那么所有的节点都会在根节点的右侧或左侧,此时,二叉搜索树就变为了一个链表,它的操作效率就降低了,时间复杂度为O(N),所以可以认为二叉搜索树的时间复杂度介于O(logN)和O(N)之间,视情况而定。那么为了应对这种极端情况,红黑树就出现了,它是具备了某些特性的二叉搜索树,能解决非平衡树问题,红黑树是一种接近平衡的二叉树(说它是接近平衡因为它并没有像AVL树的平衡因子的概念,它只是靠着满足红黑节点的5条性质来维持一种接近平衡的结构,进而提升整体的性能,并没有严格的卡定某个平衡因子来维持绝对平衡)。

3.红黑树的特性

在讲解红黑树性质之前,先简单了解一下几个概念:

  • parent:父节点
  • sibling:兄弟节点
  • uncle:叔父节点( parent 的兄弟节点)
  • grand:祖父节点( parent 的父节点)

首先,红黑树是一个二叉搜索树,它在每个节点增加了一个存储位记录节点的颜色,可以是RED,也可以是BLACK;通过任意一条从根到叶子简单路径上颜色的约束,红黑树保证最长路径不超过最短路径的二倍,因而近似平衡(最短路径就是全黑节点,最长路径就是一个红节点一个黑节点,当从根节点到叶子节点的路径上黑色节点相同时,最长路径刚好是最短路径的两倍)。它同时满足以下特性:

  1. 节点是红色或黑色
  2. 根是黑色
  3. 叶子节点(外部节点,空节点)都是黑色,这里的叶子节点指的是最底层的空节点(外部节点),下图中的那些null节点才是叶子节点,null节点的父节点在红黑树里不将其看作叶子节点
  4. 红色节点的子节点都是黑色
  5. 红色节点的父节点都是黑色
  6. 从根节点到叶子节点的所有路径上不能有 2 个连续的红色节点
  7. 从任一节点到叶子节点的所有路径都包含相同数目的黑色节点

两兄弟房子怎么分左右,两兄弟分房子有左右吗(1)

根据上面的性质,我们来判断一下下面这课树是不是红黑树

两兄弟房子怎么分左右,两兄弟分房子有左右吗(2)

上面这棵树首先很容易就能知道是满足性质1-4条的,关键在于第5条性质,可能乍一看好像也是符合第5条的,但实际就会陷入一个误区,直接将图上的最后一层的节点看作叶子节点,这样看的话每一条从根节点到叶子结点的路径确实都经过了3个黑节点。

但实际上,在红黑树中真正被定义为叶子结点的,是那些空节点,如下图。

两兄弟房子怎么分左右,两兄弟分房子有左右吗(3)

这样一来,路径1有4个黑色节点(算上空节点),路径2只有3个黑色节点,这样性质5就不满足了,所以这棵树并不是一个红黑树节点。

注:下面的讲解图中将省略红黑树的null节点,请自行脑补

4.红黑树的效率4.1 红黑树效率

红黑树的查找,插入和删除操作,时间复杂度都是O(logN)。

查找操作时,它和普通的相对平衡的二叉搜索树的效率相同,都是通过相同的方式来查找的,没有用到红黑树特有的特性。

但如果插入的时候是有序数据,那么红黑树的查询效率就比二叉搜索树要高了,因为此时二叉搜索树不是平衡树,它的时间复杂度O(N)。

插入和删除操作时,由于红黑树的每次操作平均要旋转一次和变换颜色,所以它比普通的二叉搜索树效率要低一点,不过时间复杂度仍然是O(logN)。总之,红黑树的优点就是对有序数据的查询操作不会慢到O(logN)的时间复杂度。

4.2 红黑树和AVL树的比较
  1. AVL树的时间复杂度虽然优于红黑树,但是对于现在的计算机,cpu太快,可以忽略性能差异
  2. 红黑树的插入删除比AVL树更便于控制操作
  3. 红黑树整体性能略优于AVL树(红黑树旋转情况少于AVL树)
5.红黑树的等价变换

两兄弟房子怎么分左右,两兄弟分房子有左右吗(4)

栏目热文

房子前后怎么分(楼房分前后如何分)

房子前后怎么分(楼房分前后如何分)

俗语流‬传‬广泛,它‬覆盖了‬我们生活中的方方面面。‬虽‬然字‬句‬简‬短‬,‬却‬有‬着‬丰富的文化内涵,毕竟‬俗‬语...

2023-04-15 18:01:25查看全文 >>

楼房左右怎么分(楼房怎么分前后)

楼房左右怎么分(楼房怎么分前后)

买房有很多忌讳。特别是对于楼层的选择,每个人心里都有自己的排序。普遍来说,大家都不大会碰一楼和顶楼。或者,还有一些比较“...

2023-04-15 18:10:51查看全文 >>

房子的左右怎么定(房子怎么定左边和右边)

房子的左右怎么定(房子怎么定左边和右边)

购房者在买房要考虑的因素有很多,除了考虑地段、价格、户型等因素外,楼层也是必须要考虑的重要因素,很多人不知道选房如何选楼...

2023-04-15 18:00:03查看全文 >>

房子东西南北怎么分(如何判断房子是东西南北)

房子东西南北怎么分(如何判断房子是东西南北)

户型图,是我们买房与装修时候都会接触到的一个图纸。在户型图上,除了基本的户型格局以外,我们还可以看到房子的朝向、承重结构...

2023-04-15 18:42:14查看全文 >>

房子的左右是怎么区分的(怎么分辨房子的前后左右)

房子的左右是怎么区分的(怎么分辨房子的前后左右)

结婚前判断一个男人或者一个男人的原生家庭,房子和彩礼是最好的试金石了。这就是为什么我建议女生即使特别特立独行和独立,对传...

2023-04-15 18:06:10查看全文 >>

房子里的左右方向怎么分(房子的东西南北怎么定位)

房子里的左右方向怎么分(房子的东西南北怎么定位)

《有趣的游戏——认识位置》教学设计教学内容:青岛版一年级数学第四单元有趣游戏 认识位置信息窗1教学目标:1. 使学生在游...

2023-04-15 18:46:47查看全文 >>

天然气灶价格表(液化气灶改天然气灶安全吗)

天然气灶价格表(液化气灶改天然气灶安全吗)

前段时间,刚换了一个燃气灶,买的比较好的品牌的燃气灶,我觉得非常满意,但是,旁边的婆婆说,她家刚买的,才花了600元,看...

2023-04-15 18:02:35查看全文 >>

煤气罐是液化气还是天然气(家用煤气罐是液化气吗)

煤气罐是液化气还是天然气(家用煤气罐是液化气吗)

天然气和液化气都是我们生活中常用的燃气但如果不正确使用它们的话很容易会发生事故您知道天然气和液化气的区别是什么吗?让我带...

2023-04-15 18:17:52查看全文 >>

煤气灶改天然气灶价格(煤气灶改天然气灶图解)

煤气灶改天然气灶价格(煤气灶改天然气灶图解)

生活中有很多事可以自己动手:老板液化气燃气灶改天然气我 一个出生在70年代尾巴的东北纯爷们,小时候摔过钢炮(摔泥炮),推...

2023-04-15 18:04:41查看全文 >>

天然气灶和液化气灶能通用吗(附近上门维修燃气灶具)

天然气灶和液化气灶能通用吗(附近上门维修燃气灶具)

从液化气变成天然气,灶台通用吗?看看专业师傅怎么说嗨喽大家好,说到这个天然气灶和液化气灶,不知道大家是否能够分得清,应该...

2023-04-15 18:05:43查看全文 >>

文档排行