Skip to content

Commit

Permalink
Added hw 9
Browse files Browse the repository at this point in the history
  • Loading branch information
studentfedorov committed Nov 23, 2016
1 parent 6be889b commit eae9c63
Showing 1 changed file with 31 additions and 0 deletions.
31 changes: 31 additions & 0 deletions Homework_9/tree.hs
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
import Prelude hiding (lookup)

data BinaryTree k v = None | Node {
key :: k
, value :: v
, left :: BinaryTree k v
, right :: BinaryTree k v
}

lookup :: Ord k => k -> BinaryTree k v -> Maybe v
lookup k None = Nothing
lookup k n |(key n) == k = Just (value n)
|(key n) > k = lookup k (left n)
|otherwise = lookup k (right n)

insert :: Ord k => k -> v -> BinaryTree k v -> BinaryTree k v
insert k v None = Node k v None None
insert k v n | (key n) == k = Node k v (left n) (right n)
| (key n) > k = Node (key n) (value n) (insert k v (left n)) (right n)
| otherwise = Node (key n) (value n) (left n) (insert k v (right n))

merge :: Ord k => BinaryTree k v -> BinaryTree k v -> BinaryTree k v
merge a None = a
merge None b = b
merge a b = Node (key a) (value a) (left a) (merge (right a) b)

delete :: Ord k => k -> BinaryTree k v -> BinaryTree k v
delete k None = None
delete k n | (key n) == k = merge (left n) (right n)
| (key n) > k = Node (key n) (value n) (delete k (left n)) (right n)
| otherwise = Node (key n) (value n) (left n) (delete k (right n))

0 comments on commit eae9c63

Please sign in to comment.