了解带有递归调用的二分搜索树(BST)删除实现

时间:2018-10-09 15:47:01

标签: java data-structures binary-search-tree

我在理解如何在BST中实现删除操作时遇到了一些麻烦。我可以轻松实现Afind()并了解发生了什么,但是在删除时遇到了麻烦。

据我所知,删除过程涉及更新我们要删除的节点的父对象,即右引用或左引用(视情况而定),以引用null或要删除的节点的子对象(当要删除的节点有一个时)子级),或以其顺序后继者替换(当要删除的节点有2个子级时)。

我看到的大多数实现都像Java one here。似乎以不需要显式父引用的方式使用递归。我认为这是我一直感到困惑的地方。

任何人都可以解释这里的递归调用如何工作以及如何实现吗?

1 个答案:

答案 0 :(得分:0)

在该链接中,重复性用于查找关键字,同时保留对父节点的引用,因为它返回将替换将要删除的节点的相关节点。它还会“删除”其使用的节点,以通过重复操作替换原始节点,从而避免重复。

希望这会有所帮助