019642d6-1889-7792-ada8-81be8701d7da:v0
Last updated
Last updated by
Storage size
11.3kBPath
Value
call_id
019642d6-1889-7792-ada8-81be8701d7da
trace_id
019642d6-1889-7792-ada8-81af6ec057bc
parent_id
null
solution
invert :: Tree a -> Tree a
invert t = invertHelper True t
where
invertHelper :: Bool -> Tree a -> Tree a
invertHelper True (Leaf x) = Leaf x
invertHelper True (Node l r) =
let l' = invertHelper True l
r' = invertHelper True r
in invertHelper False (Node l' r')
invertHelper False (Leaf x) = Leaf x
invertHelper False (Node a b) =
case (a, b) of
(Leaf _, Leaf _) -> Node a b
(Node a1 a2, Node b1 b2) ->
Node (invertHelper False (Node a1 b1))
(invertHelper False (Node a2 b2))
_ -> error "invert: non‑perfect tree encountered"
call
success
true