我有以下运动:哈斯克尔转换有序列表的成平衡树〜代码说明
定义功能list2tree一个给定的有序列表转换为平衡树 - 右边的高度和左子树这种树的任何节点都可以通过最多相差1
谁能解释这段代码,它是如何工作的?另外我怎样才能在控制台中测试树?
解决方案:
data Tree a = Leaf a
| Node a (Tree a) (Tree a)
| Null
list2tree [] = Null
list2tree [x] = Leaf x
list2tree list = Node x (list2tree ltx) (list2tree gtx)
where
m = length list `div` 2
x = list !! m
ltx = take m list
gtx = drop (m+1) list
究竟你不明白有关的代码?你试过什么了? –