【问题标题】:Finding floor & ceiling in BST with Haskell使用 Haskell 在 BST 中查找地板和天花板
【发布时间】:2014-12-08 07:22:20
【问题描述】:

我收到了以下代码,希望我能完成它。目的是设计一个函数来计算 BST 中给定元素 k 的下限。 BST 中元素“k”的底是小于“k”的最大键。

我真的很茫然...我已经为 Java 编写了这个程序,但是无法在 Haskell 中解决它。

floor :: Ord a => a -> ABST a -> Maybe a
floor x Empty    = Nothing
floor x (Node y w lt rt) 
  | x == y       = Just y
  | x < y = undefined
  | x > y = undefined

提前谢谢你。

【问题讨论】:

  • 首先找到所有元素都小于k的最大子树(即遍历树直到找到小于k的节点)。然后返回该树的最大元素。把它写成两个不同的函数可能是最简单的。

标签: function haskell binary-search-tree floor


【解决方案1】:

您可以尝试检查“自然”递归调用是否有助于解决此问题。

也就是说,考虑:

floor :: Ord a => a -> ABST a -> Maybe a
floor x Empty    = Nothing
floor x (Node y w lt rt) 
  | x == y       = Just y
  | x < y = ???
  | x > y = ???
  where floorL = floor x lt
        floorR = floor x rt

那么,有没有办法利用floorL,floorR来达到想要的结果呢?

【讨论】:

    猜你喜欢
    • 2021-08-25
    • 1970-01-01
    • 1970-01-01
    • 2019-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-14
    相关资源
    最近更新 更多