我有一本书以非常糟糕的方式解释了整个二进制搜索树,到目前为止我已经能够完成对我的书的研究并了解二叉搜索树,但是我找到了二元搜索树的解释操作Delete
我理解这两个简单的操作:
然而,有两个孩子的人对我来说真的很难理解,我已经阅读过维基和其他网站试图找到解决方案,但我发现解释有点加密。
我希望这里有人可以给我一个更多的细节,或者用另一种方式向我解释一下?
答案 0 :(得分:2)
如果您了解前两个规则,那么删除一个有两个孩子的节点并不难理解。
一种非常简单的思考方式是,转到要删除的节点的有序后继(或前任)。然后再次应用前两个规则和先前的规则。
编程时,具有完整功能的后继功能(前驱)功能使编码删除变得更加简单。
对于这棵树:
要删除8:
转到9(7)
将9替换为10
将8替换为9(7)
要删除12:
转到第14(10)页
(将9替换为10)
将12替换为14(10)
答案 1 :(得分:2)
我们可以简单地说:
要删除二叉树中具有2个子节点的节点N(如上所述),请将此N替换为左子树的最大节点或右子树的最小节点
答案 2 :(得分:1)
当节点有两个孩子时,你必须:
4有2个孩子。
找到最小权利子树。
5找到。
因此,4被5替换,4被删除。
希望这就是你要找的东西!!