我有以下運動:哈斯克爾轉換有序列表的成平衡樹〜代碼說明
定義功能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
究竟你不明白有關的代碼?你試過什麼了? –