大家好,我想实现删除算法的红黑树,我有这个算法的理解三号线(从一本书“算法导论”第二版)问题:

1,如果左[Z] =零[T]或右边的[Z] =零[T],点击  2则y←ž结果  3其他Ÿ←树SUCCESSOR(Z)点击  4如果左[Y]≠零[T],点击  5,则x←左[Y],点击  6否则x←右[Y],点击  7 P [X]←P [Y],点击  8如果p [Y] =零[T],点击  9然后根[T]←X,点击 10否则,如果Y =左[P [Y]]结果 11然后离开[P [Y]]←X,点击 12别的右[P [Y]]←X,点击 13如果y 3≠ž结果 14然后键[Z]←键[Y],点击 15ÿ的卫星数据复制到ž结果 16如果颜色[Y] =黑色,点击 17然后RB-DELETE-FIXUP(T,x)的结果, 18返回ÿ

首先,你无处在这本书中解释了什么是树的继任者猜想的样子(无算法为),但我发现的此页面:如果我养活这个算法白衣11,2,1,7,5,8,14,15,4然后尝试删除7找到的前身但如果我尝试删除11找到的后继即可。这是我无法理解。为什么有时需要前身有时接班人?什么标准考虑而做出这个决定?节点的颜色?点击 谢谢你。

P.S。我也不太明白什么是写在行号13.这是否意味着,如果y有三种颜色(黑色既不也不红色)或其他什么东西?

有帮助吗?

解决方案

树后继(如树前身的相反[这是在那本书我相信])一般为二叉搜索树,与下一个最高关键字的节点定义。它是如何确定它是依赖于类型(红黑在这种情况下)和林几乎可以肯定你的书叶的继任方法练习。 (ⅰ记住问题:P)

其他提示

我觉得你正在阅读CLRS第2版。

“12.2查询二叉搜索树” -

TREE-继任者在第12章第2节引入的。而相反的是杰西Naugher说,它不依赖于二叉搜索树的类型。

13号线你报的是一个错字。它应该是 “如果y!= Z”。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top