社区
数据结构与算法
帖子详情
红黑树为什么需要旋转?
stuman
2017-07-08 01:07:26
书上说红黑树插入节点时,会改变颜色属性,此时需要旋转,但是我很不理解什么情况下需要旋转,旋转的作用究竟是什么?
...全文
577
1
打赏
收藏
红黑树为什么需要旋转?
书上说红黑树插入节点时,会改变颜色属性,此时需要旋转,但是我很不理解什么情况下需要旋转,旋转的作用究竟是什么?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
1 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
FancyMouse
2017-07-08
打赏
举报
回复
防止树退化成链,导致O(n)(而不是logn)的高度
数据结构:什么是
红黑树
?为什么要用
红黑树
?
本篇主要谈谈对
红黑树
的理解,大家都晓得JDK8中的hashmap底层是数组+链表+
红黑树
实现的,当面试官问你:为啥要加上
红黑树
实现呢?? 那我们首先从概念来了解一下: 一、什么是
红黑树
?
红黑树
是一个接近平衡的二叉查找树,也就是说二叉查找树的特性
红黑树
应该都具备,那么具备哪些特性呢? 左子树小于根节点 右子树大于根节点 左右子树也分别为二叉查找树 换句话就是有序的。那么有什么优点呢? 比如我要插入2,该怎么插入呢? 和5比较,<5,到左侧;和3比较,<3到左侧;和1比较,>1
红黑树
的特性和优势,在什么情况下
需要
变色,在什么情况下
需要
旋转
?
特性(除了具备二叉查找树的特性外,还具备如下特性): (1)节点是红色或者黑色 (2)根节点是黑色 (3)每个叶子节点(也叫终端节点,简称“叶子”)都是黑色的空节点(NIL节点) (4)每个红色节点的两个子节点都是黑色。(从每个叶子节点到根节点的路径上不能有两个连续的红色节点) (5)从任一节点到其每个叶子的所有路劲都包含相同数目的黑色节点 优势: (1)自平衡。
红黑树
从根到叶子的最长路径不会超...
红黑树
概念和
旋转
实现
三、
红黑树
1.
红黑树
的概念 不是一颗平衡树,节点的左右子树高度大的不超过高度小的两倍。在满足
红黑树
性质的前提下,
旋转
的次数要远小于AVL树。C++的map、set的底层数据结构就是
红黑树
。
红黑树
特点: 树的每一个节点不是黑色就是红色, null是黑色 root是黑色 从根节点到每一个叶子节点的所有路径上,不能出现连续的红色节点 从根节点到每一个叶子节点的所有路径上,黑色节点的数量是相同的 思考题:在
红黑树
中,节点的左右子树的高度差最多不能超过多少? 左右子树高度差最多不超过两倍 2.
红黑树
的
红黑树
详解,对插入
旋转
独到理解
R-B Tree,全称是Red-Black Tree,又称为“
红黑树
”,它一种特殊的二叉查找树。
红黑树
的每个节点上都有存储位表示节点的颜色,可以是红(Red)或黑(Black)。 将一个节点插入到
红黑树
中,
需要
执行哪些步骤呢?首先,将
红黑树
当作一颗二叉查找树,将节点插入;然后,将节点着色为红色;最后,通过
旋转
和重新着色等方法来修正该树,使之重新成为一颗
红黑树
。详细描述如下: 第一步: 将
红黑树
当作一颗二叉查找树,将节点插入。
红黑树
本身就是一颗二叉查找树,将节点插入后,该树仍然是一颗二叉...
为什么要有
红黑树
?什么是
红黑树
?
为什么要有
红黑树
想必大家对二叉树搜索树都不陌生,首先看一下二叉搜索树的定义:二叉搜索树(Binary Search Tree),或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 它的左、右子树也分别为二叉排序树。 从理论上来说,二叉搜索树的查询、插入和删除一个节点的时间复杂度均为O(log(n)),已经完全可以满足我们的要求了,那么为什么还要有
红黑树
呢? 我们来看一个例子,向二叉搜
数据结构与算法
33,028
社区成员
35,337
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章