【问题标题】:Using binary search tree with custom data types?使用具有自定义数据类型的二叉搜索树?
【发布时间】:2016-09-25 17:31:52
【问题描述】:

我已经创建了一个二叉搜索树:

data SearchTree a = Empty | Node a (SearchTree a) (SearchTree a) deriving (Show, Eq, Ord)

insertTreeElements :: (Ord a) => a -> SearchTree a -> SearchTree a --Create    binary tree input method
insertTreeElements x Empty = Node x Empty Empty
insertTreeElements x (Node a left right)
   | x == a     = Node x left right
   | x < a  = Node a (insertTreeElements x left) right
   | x > a      = Node a left (insertTreeElements x right)

makeTree :: (Ord a) => (a -> SearchTree a -> SearchTree a) -> SearchTree a -> [a] -> SearchTree a --Create binary tree
makeTree iTE Empty li = foldr iTE Empty li

我正在尝试传入以下列表:

Type Age = Int
mylist = [Age 12, Age 100, Age 2, Age 3, Age 43]

但是输出不正确,它没有根据年龄的大小对树进行排序?我如何需要编辑 insertTreeElements 以使其与“Age x”一起使用?

【问题讨论】:

    标签: haskell recursive-datastructures


    【解决方案1】:

    可能你遇到的最大问题是这个:

       | x > a      = Node a left (insertTreeElements x left)
    

    注意你写了两次left——大概其中一个应该是right

    【讨论】:

      猜你喜欢
      • 2015-02-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多