【发布时间】:2020-03-02 08:07:59
【问题描述】:
请忽略我蹩脚的英语,因为我不是母语人士。 我正在寻找在 BST 中找到第 k 个最小元素的最佳方法,我想过将树附加到列表并遍历该列表之类的方法,但这需要太多时间 O(n) 我还考虑过从树中删除元素,然后找到最小的元素,但这也需要更多时间。 解决这个问题的最佳算法是什么? 由于方案是一种函数式编程语言,因此解决方案必须是递归的。我试图寻找答案,但 C 或 Java 中的大多数答案都会使用某种迭代格式。 谢谢您的帮助, 我的功能应该看起来像 (定义 (kth-smallest T k) ...)
【问题讨论】:
-
为了比 O(n) 更好地做到这一点,它需要是一个平衡树,并且您需要能够在不搜索的情况下计算子树的大小。您没有显示任何代码,所以我不知道是否可以使用您的数据结构。
-
我的数据结构很简单。将树定义为一个值的列表,左右。我看到了你的想法,但我不知道如何实现它。但我想这是正确的方法
标签: algorithm scheme binary-search-tree racket