私は次の演習がありますHaskellの変換〜コード説明
は、バランスの取れた木に与えられた順序付きリストを変換する関数を定義し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
正確にあなたがコードについて理解していませんか?これまでに何を試しましたか? –