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