红黑树添加新节点转换疑惑

红黑树添加新节点转换疑惑

向一个三节点添加一个元素,且元素大于三节点中任意一个元素

http://img1.sycdn.imooc.com//climg/60529bce09df072006480137.jpg

那么换成2-3树,对应的添加过程为


http://img1.sycdn.imooc.com//climg/60529de208aecaf506620131.jpg

此时2-3树并没有三节点,就没有红色节点,然后将2-3树转换成红黑树,不应该是这样吗老师,但是您的图37和66都是红色的,就很疑惑

http://img1.sycdn.imooc.com//climg/60529fa108b8100606620131.jpg



正在回答

登陆购买课程后可参与讨论,去登陆

1回答

我不确定我是不是正确理解了你的问题。


37 和 66 都是红色,只是算法的中间步骤,算法还没有结束。之后依靠 flipColors,红节点向上转移。请参考后两页 ppt。


http://img1.sycdn.imooc.com//climg/60559771095a49bd18640996.jpg



如果最终 42 是整棵树的根节点,42 会在最后转为黑色。因为根节点永远是黑色的。参考我们写的代码第 95 行:https://git.imooc.com/class-104/Play-Algorithms-and-Data-Structures/src/master/26-Red-Black-Tree/07-Adding-Elements-in-Red-Black-Tree/src/RBTree.java


所以,是的,如果这棵树就这三个节点,最终和他们都是黑色的。


你可以尝试一下,用这个例子,使用我们自己写的代码,用单步跟踪的方式观察一下,每添加一个节点,各个节点的 color 是怎么变化的?再理解一遍这个过程。


继续加油!:)



  • Panda_io 提问者 #1

    谢谢bobo老师,是我看视频没有看完整,没搞清楚上面的操作只是一个子过程,还得元素颜色翻转,您这么一说豁然开朗,真是打扰您了!真的非常感谢

    2021-03-20 17:11:12
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
计算机基础课
  • 参与学习       244    人
  • 解答问题       162    个

1000位程序员+大厂HR联袂推荐,面向所有程序员的计算机核心知识体系,优惠中~

了解课程
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师