如何从Lisp中的二叉搜索树中删除

时间:2010-12-07 08:09:55

标签: lisp scheme racket binary-search-tree

如何从BST中删除节点?

我需要一种算法来在Dr.博士中做到这一点。

2 个答案:

答案 0 :(得分:3)

你基本上扔了你现在拥有的BST,然后创建一个没有该元素的新的。

您可以通过递归递降树来完成此操作。如果您的项目小于根数据,请创建一个BST,其root和Greater-than分支是从您现在拥有的,但其less-than分支是递归调用的结果。

这与添加节点的方式非常相似,但是当您到达要搜索的节点时,将其下面的两个BST合并并返回结果。关于如何做到这一点肯定存在问题。

答案 1 :(得分:2)

假设您的二元搜索树使用仅在叶子上有内容的直接缺点单元格,并假设您正在处理作业: 您可以使用set-car!set-cdr!更改利弊单元格的内容。