Guest User

Untitled

a guest
Apr 19th, 2018
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.65 KB | None | 0 0
  1. module Main where
  2.  
  3. data Bst a = Nil | Node {
  4. elt :: a,
  5. l :: Bst a,
  6. r :: Bst a} deriving Show
  7.  
  8. insert_ntr Nil x = Node x Nil Nil
  9. insert_ntr n x | x < elt n = n {l = insert_ntr (l n) x}
  10. insert_ntr n x | x > elt n = n {r = insert_ntr (r n) x}
  11. insert_ntr n x | otherwise = n
  12.  
  13. insert n x = recur n x id where
  14. recur Nil x fun = fun $ Node x Nil Nil
  15. recur n x fun | x < elt n = recur (l n) x $ fun . (\k -> n {l = k})
  16. recur n x fun | x > elt n = recur (r n) x $ fun . (\k -> n {r = k})
  17. recur n x fun | otherwise = n
  18.  
  19. mkTree f = foldl f Nil
  20.  
  21. main = do
  22. let l = [5,8,4,2,1,9,6,7,3,5]
  23. putStrLn . show . mkTree insert_ntr $ l
  24. putStrLn . show . mkTree insert $ l
Add Comment
Please, Sign In to add comment