您好!欢迎来到爱源码

爱源码

热门搜索: 抖音快手短视频下载   

快进收藏吃灰!字节跳动用最简单的方式解释了红黑树算法。 <源代码交易>

  • 时间:2022-08-18 00:31 编辑: 来源: 阅读:320
  • 扫一扫,手机访问
摘要:快进收藏吃灰!字节跳动用最简单的方式解释了红黑树算法。 <源代码交易>
不知道大家有没有看今天面试官被杀的视频。我神奇的同事不知道大脑回路突然被打开了。他在办公室问:“面试官有没有问红黑树的事,把头发给了面试者?问大家,我不会再问这个了,然后突然开始!”!然后办公室就出现了讨论boom树,大学时代的数据结构与算法重点之一。当时真的是头疼了很久,但其实现在想想,什么都没变,还是头疼。看下图,树上包含的内容快进收藏吃灰!字节跳动用最简单的方式讲解了红黑树的算法,树的内容集中在二叉树上。首先我们来复习一下BST树的基础知识:二叉查找树(简称BST),又称二叉排序树,属于树的一种。数据采用二叉树组织,树的每个节点包含键值、数据值data、左子节点指针和右子节点指针。 其中,关键值是核心部分,其值决定了树的组织形状;值数据是节点对应的数据,有些场景可以忽略。比如key是身份证号,data是人名,通过身份证号找到人名;左子节点指针指向左子节点;右子节点指针指向右子节点 特征:左右子树也是二分搜索法树。 左子树中所有节点的键值都小于其根节点的键值。 右侧子树中所有节点的键值都大于其根节点的键值。 二叉查找树可以是一棵空树。 一般来说,树中每个节点的键值是不相等的,但是根据需要也可以在树中插入相同的键值。AVL树,也被称为平衡二叉查找树,是其发明者名字的缩写。 AVL树属于树的一种,也是二叉查找树。不同的是,它可以通过肯定性机制保证二叉查找树的平衡,平衡二叉查找树的查询效率更高。 特点:AVL树是一个二叉查找树。 AVL树的左右子节点也是AVL树。 AVL树具有二叉查找树的所有基本特征。 每个节点的左右子节点高度差的绝对值最多为1,即平衡因子在[-1,1]范围内。 另一个是我们今天讨论的焦点:红黑树。让我们来看看红黑树,这是一个自我平衡的二叉查找树。它是由鲁道夫·拜尔在1972年发明的。它类似于AVL树,在插入和删除操作中可以通过旋转来保持二叉查找树的平衡,从而达到高效的搜索性能。 它可以在O(登录)时间内进行搜索、插入和删除。 红树相当于2-3-4树,但有些红黑树只能留下红树,红树相当于2-3树。 对于AVL树来说,红黑树在插入/删除操作时牺牲一部分平衡来换取一些旋转操作,整体性能优于AVL树。 特征:节点为红色或黑色。 根是黑色的。 每个叶节点(零节点)是黑色的。 每个红色节点的两个子节点是黑色的。 (从每个叶子到根的所有路径上不能有两个连续的红色节点)从任何节点到每个叶子的所有路径都包含相同数量的黑色节点。 最长路径不超过最短路径的2倍。快进收藏吃灰!字节跳动用最简单的方式解释了红黑树算法。上图是一棵简单的红黑树。 其中Nil是叶节点,它是黑色的。 (H和M的黑叶节点没有画出来。)具体我们需要对红黑树的几个节点的名称达成一致,如图2所示,以免后面的解释混淆。 快进收藏吃灰!字节跳动大哥用最简单的方式解释了红黑树算法。我们将正在被求解(遍历)的节点称为当前节点,如图2中的D所示。它的父亲称为父节点,它的父亲的另一个子节点称为兄弟节点,父亲的父亲称为祖父节点。 3.基本操作如前所述,红黑树可以自我平衡。它靠的是什么?三种操作:左手,右手,变色。 左旋:逆时针旋转,父节点被自己的右子节点替换,成为自己的左子节点(注:左旋只影响旋转节点及其右子树的结构,将右子树的节点移到左子树。 )快进收藏吃灰!字节跳动大哥用最简单的方式解释了红黑树算法是右撇子:顺时针旋转时,父节点被左子所取代,他变成了自己的右子(注:右撇子只影响旋转节点及其左子树的结构,将左子树的节点移到右子树。 )快进收藏吃灰!字节跳动用最简单的方式解释了红黑树算法的颜色变化:节点的颜色由红变黑或由黑变红。 所以不难看出,无论是什么旋转操作,树的节点都是局部变化的,但要保持红黑树的性质,节点不能四处移动,还得变色。 怎么改?具体情况有不同的变化。来看看快进收藏吃灰吧!老板字节跳动用最简单的方式解释了红黑树算法。进收藏吃灰!老板字节跳动用最简单的方式解释了红黑树算法。进收藏吃灰!老板字节跳动用最简单的方式解释了红黑树算法。进收藏吃灰!老板字节跳动用最简单的方式解释了红黑树算法。进收藏吃灰!字节跳动大哥用最简单的方式解释了红黑树算法。至此,变色任务完成。按部就班,符合规则,循序渐进。错过一步,可能就不知道快进收藏吃灰了!老板字节跳动用最简单的方式解释了红黑树算法。理论上的东西基本都解释到这里了。红黑树难吗?说实话,我个人觉得这种蠢事太丢人了。4.红黑树的一部分实现了红黑树的节点。红黑树是对二叉查找树的改进,因此它的节点类似于二叉查找树,只是增加了一个布尔变量来表示节点的颜色。请参见RBNode类:公共类RBNode 由于红黑树始终保持黑色的完美平衡,其搜索的最坏时间复杂度为O(2lgN),即整棵树恰好与黑色分离。 这么好的搜索效率得益于红黑树的自平衡特性,而在这背后,红黑树的插入操作是必不可少的~ 5.2插入操作包括两个部分:一找到插入位置就找到要插入的父节点;插入后自动平衡 插入的父节点很简单,和搜索操作区别不大。我们用流程图总结一下。快进收藏吃骨灰!字节跳动大哥用最简单的方式解释了红黑树算法。特别注意:如果面试时有人问你插入的节点应该是什么颜色?答案是红色。 原因很简单。当红色的父节点是黑色时(如果存在),红黑树的黑色平衡没有被破坏,所以不需要自平衡操作。 但是如果插入节点是黑色的,那么插入位置所在子树的黑色节点总是多1,所以自平衡是必要的。


  • 全部评论(0)
资讯详情页最新发布上方横幅
最新发布的资讯信息
【域名/主机/服务器|】qq邮箱提醒在哪里打开(2024-06-04 18:58)
【技术支持|常见问题】1556原创ng8文章搜索页面不齐(2024-05-01 14:43)
【技术支持|常见问题】1502企业站群-多域名跳转-多模板切换(2024-04-09 12:19)
【技术支持|常见问题】1126完美滑屏版视频只能显示10个(2024-03-29 13:37)
【技术支持|常见问题】响应式自适应代码(2024-03-24 14:23)
【技术支持|常见问题】1126完美滑屏版百度未授权使用地图api怎么办(2024-03-15 07:21)
【技术支持|常见问题】如何集成阿里通信短信接口(2024-02-19 21:48)
【技术支持|常见问题】算命网微信支付宝产品名称年份在哪修改?风水姻缘合婚配对_公司起名占卜八字算命算财运查吉凶源码(2024-01-07 12:27)
【域名/主机/服务器|】帝国CMS安装(2023-08-20 11:31)
【技术支持|常见问题】通过HTTPs测试Mozilla DNS {免费源码}(2022-11-04 10:37)

联系我们
Q Q:375457086
Q Q:526665408
电话:0755-84666665
微信:15999668636
联系客服
企业客服1 企业客服2 联系客服
86-755-84666665
手机版
手机版
扫一扫进手机版
返回顶部