1
有沒有辦法將其轉換,以便根據身高檢查平衡? (假設這就是問題所在。)Haskll,高度平衡檢查
size :: Tree a -> Int
size (Leaf n) = 1
size (Node x z) = size x + size z + 1
isBalanced :: Tree a -> Bool
isBalanced (Leaf _) = True
isBalanced (Node l r) =
let diff = abs (size l - size r) in
diff <= 1 && isBalanced l && isBalanced r
例如:
isBalanced (Node (Node (Leaf 1)(Leaf 3)) (Leaf 2))) = True (Currently returns False)
isBalanced (Node (Node (Leaf 1)(Node (Leaf 1)(Leaf 3))) (Leaf 2))) = False
這似乎已經解決了這個問題,謝謝! – user3633383