【发布时间】:2010-08-18 12:45:15
【问题描述】:
谁能帮我解决我的作业问题?我已经完成了大部分工作,但我仍然停留在这 3 个问题上。
问题来了:
考虑以下类型的搜索树和平衡树
data STree = Leaf | Node STree Int STree data Btree = Tip Int | Branch Btree Btree其构造函数受以下约束:
Node left n right形式的值必须使左侧的所有整数最多为n,并且右侧的所有整数都大于n。Branch left right形式的值在left和right中的整数个数之间的差值最多为 1。a) 定义一个递归函数
stree :: [Int] -> STree,它从整数列表中构造一个搜索树。b) 定义一个递归函数
btree :: [Int] -> BTree,它从一个非空整数列表构造一个平衡树。c) 使用合并,定义一个递归函数
collapse :: BTree -> [Int],它折叠平衡树以给出排序的整数列表。
请帮帮我!!!
提前非常感谢!
【问题讨论】:
-
您的问题有两个部分。首先,关于二叉树的必要算法的设计。其次,它们在 Haskell 中的实现。澄清您在解决问题方面的进展,以及您需要帮助的步骤。
-
到目前为止你有什么?
-
致“gbacon”:事实上,这部分有5个问题,但我已经完成了2个并坚持了上面的3个问题。其他2个问题是:“flatten”和“merge” {-flatten question-} flatten :: Tree -> [Int] flatten (Leaf n) = [n] flatten (Node l n r) = flatten l ++ [n] ++ 展平 r 和 {-merge question-} 合并 :: [Int] -> [Int] -> [Int] 合并 []xs = xs 合并 xs[] = xs 合并 (x:xs)(y:ys) = if (x
标签: haskell