算法导论P167页关于红黑树插入的伪代码

如果红黑树是这种形式的请输入图片描述 请输入图片描述

最下面的红节点表示新插入的节点,请问:这个过程和伪代码是如何对应的?另外,我看伪代码执行了color[y]=RED的情形后,应该回到while(color[p[z]]==Red)那个地方,我看伪码怎么要执行12-14行呢?这是不对的啊??

问题2:针对这个代码,谁能帮我描述一下代码的执行过程?我先说一下我的思路:y=right[p[p[z]]],此时的y为哨兵节点,color[y]=BLACK,请问如果12-14行包含在第二个else if(z=right[p[z]])中时,程序如何执行到12-14行?

阅读 7.2k
2 个回答

if color[y]=RED后面的then是if正确后执行的,12-14行是与这个if对应的else(即它是BLACK), 所以伪代码没有执行到12-14行,而是进行另一个while循环,也许是刚好翻页了,缩进看的不是很清楚。 在翻页后可以看到的那个else是跟第一个if对应的,而12-14行是和else if z = right[p[z]]这一行的else对应的,是和这个if相同缩进的。 你也可以详细看看后面的情形1,2,3,就理解了具体步骤,而不用管他这个伪代码到底是什么情况。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题