tasks a-s
This commit is contained in:
parent
47bf37c096
commit
b83f433714
12433 changed files with 156208 additions and 123 deletions
18
Task/Pattern-matching/Haskell/pattern-matching.hs
Normal file
18
Task/Pattern-matching/Haskell/pattern-matching.hs
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
data Color = R | B
|
||||
data Tree a = E | T Color (Tree a) a (Tree a)
|
||||
|
||||
balance :: Color -> Tree a -> a -> Tree a -> Tree a
|
||||
balance B (T R (T R a x b) y c ) z d = T R (T B a x b) y (T B c z d)
|
||||
balance B (T R a x (T R b y c)) z d = T R (T B a x b) y (T B c z d)
|
||||
balance B a x (T R (T R b y c) z d ) = T R (T B a x b) y (T B c z d)
|
||||
balance B a x (T R b y (T R c z d)) = T R (T B a x b) y (T B c z d)
|
||||
balance col a x b = T col a x b
|
||||
|
||||
insert :: Ord a => a -> Tree a -> Tree a
|
||||
insert x s = T B a y b where
|
||||
ins E = T R E x E
|
||||
ins s@(T col a y b)
|
||||
| x < y = balance col (ins a) y b
|
||||
| x > y = balance col a y (ins b)
|
||||
| otherwise = s
|
||||
T _ a y b = ins s
|
||||
Loading…
Add table
Add a link
Reference in a new issue