给定二叉搜索树和密钥,如何找到哪些值最接近该密钥的M树节点?

时间:2014-11-16 01:43:06

标签: algorithm search data-structures tree

最近,我遇到了算法问题:

  

给定二叉搜索树和密钥,如何找到第一个M树节点   哪些值最接近该键?

我的想法是使用按顺序遍历将每个树节点值放入另一个数组中。然后我们使用二进制搜索来找到该阵列中给定键的最接近的节点X.最后,我们从这个节点X到左侧和右侧开始搜索,找到最接近给定键的前M个值。

然而,我的想法需要O(n)时间和O(n)空间。是否有比我的想法更好的想法?

1 个答案:

答案 0 :(得分:0)

  1. 找到密钥(或至少找到它的位置)
  2. 从那时起,进入下一个最高值
  3. 同样从那时起,回归到下一个最低值
  4. 无论哪个更近,保存该值并移动到远离键的下一个值。也就是说,如果较高的值更接近,则转到下一个更高的值;否则,请转到下一个较低的一个。
  5. 继续,直到您拥有M个节点。