data LinkedTree a
= EmptyTree
| Node a (LinkedTree a) (LinkedTree a) (LinkedTree a)
root = Node 1 l r EmptyTree
where
l = Node 2 EmptyTree EmptyTree root
r = Node 3 EmptyTree EmptyTree root
instance Show a
=> Show (LinkedTree a
) where show (Node x EmptyTree EmptyTree
_) = "{" ++ show x
++ "}"
left (Node _ l _ _) = l
right (Node _ _ r _) = r
parent (Node _ _ _ p) = p
main = do
let rootLeft = left root
ZGF0YSBMaW5rZWRUcmVlIGEKCT0gRW1wdHlUcmVlCgl8IE5vZGUgYSAoTGlua2VkVHJlZSBhKSAoTGlua2VkVHJlZSBhKSAoTGlua2VkVHJlZSBhKQoKcm9vdCA9IE5vZGUgMSBsIHIgRW1wdHlUcmVlCgl3aGVyZQoJCWwgPSBOb2RlIDIgRW1wdHlUcmVlIEVtcHR5VHJlZSByb290CgkJciA9IE5vZGUgMyBFbXB0eVRyZWUgRW1wdHlUcmVlIHJvb3QKCmluc3RhbmNlIFNob3cgYSA9PiBTaG93IChMaW5rZWRUcmVlIGEpIHdoZXJlCglzaG93IEVtcHR5VHJlZSA9ICJ7fSIKCXNob3cgKE5vZGUgeCBFbXB0eVRyZWUgRW1wdHlUcmVlIF8pID0gInsiICsrIHNob3cgeCArKyAifSIKCXNob3cgKE5vZGUgeCBsIHIgXykgPSAieyIgKysgc2hvdyB4ICsrICIgIiArKyBzaG93IGwgKysgIiAiICsrIHNob3cgciArKyAifSIKCmxlZnQgICAoTm9kZSBfIGwgXyBfKSA9IGwKcmlnaHQgIChOb2RlIF8gXyByIF8pID0gcgpwYXJlbnQgKE5vZGUgXyBfIF8gcCkgPSBwCgptYWluID0gZG8KCXByaW50IHJvb3QKCWxldCByb290TGVmdCA9IGxlZnQgcm9vdAoJcHJpbnQgcm9vdExlZnQKCXByaW50ICQgcGFyZW50IHJvb3RMZWZ0Cg==