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

标签 lisp scheme racket binary-search-tree

如何从 BST 中删除节点?

我需要一个算法来在 Dr. Scheme 中做到这一点。

最佳答案

您基本上是扔掉现有的 BST,然后创建一个没有该元素的新 BST。

您可以通过递归地降低树来做到这一点。如果您的项目小于根数据,请创建一个 BST,其根和大于分支是从您现在拥有的分支复制的,但其小于分支是递归调用的结果。

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

关于lisp - 如何从 Lisp 中的二叉搜索树中删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4374530/

相关文章:

rest - 额外的 header 未通过 url.el 发送

scheme - 如何在 DrRacket 中进行 powerset?

oop - Racket 子类中绑定(bind)的自动继承

stream - 交替两个值

javascript - Racket(方案)中的arguments.callee?

f# - CPS转换时如何避免栈溢出?

lisp - 测试一个类是否是普通 lisp 中另一个类的子类

html - 如何从 url 字符串获取 html 响应? (计划/ Racket )

scheme - 给定索引列表重新排列列表

lisp - 为什么没有 `unquote` Lisp 原语?