【问题标题】:How to make lower bound in Binary Search Tree?如何在二叉搜索树中设置下界?
【发布时间】:2011-11-29 16:43:38
【问题描述】:

当我在二叉搜索树中给出一些整数时,我做了最接近的下限

  def lowerBound(x : Int) : Int = {
    var t = root
    var result : Int = 0
    while(t.key != x) {
        if(x == t.key) {
            result = t.left.key
        }
        else{
          if(x < t.key) {
            t = t.left
            if(t == null) {
                throw new NoSuchElementException     
            }
            else {
                result = t.key
            }
          }
          else {
            t = t.right
          }
        }
  }
  result
}

我就是这样做的。但它不打印任何结果。呜呜呜…… 我的算法中有反例吗?

如果有 {2, 3, 5, 7 ,8, 10, 99} lowerBound(6) 是 5。

【问题讨论】:

    标签: algorithm scala data-structures binary-search-tree


    【解决方案1】:

    家庭作业?

    那么请指点一下:

    • 只有t.key == x才能成功退出循环,所以除非x在树中,否则无法成功返回。听起来不对。
    • 如果在某个时刻您选择向右走,那么您知道树中至少有一个值小于 x。所以在你至少做了一次正确之后,就有了解决方案,你不应该失败。这不会出现在您的代码中。
    • 当你选择向右时,那里可能没有数据,你应该检查一下。
    • 画一个小的 BST 并在图纸上检查你的想法,这应该会有很大帮助。

    还有

    • 确定您的计算结果。小于或等于 x,或严格小于 x 的最大元素?
    • 也许您可以尝试递归实现。

    【讨论】:

    • 没关系,已经够明显了。那么祝你好运吧。如果您更好地了解您的问题但仍需要帮助,请完善您的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    • 1970-01-01
    • 2012-12-27
    • 1970-01-01
    • 2019-03-09
    相关资源
    最近更新 更多