From db533ae06798f2b1e5dfb01fe2be13a34deeb8a5 Mon Sep 17 00:00:00 2001 From: Eduarda Santos Date: Sat, 10 Oct 2020 17:16:31 -0300 Subject: [PATCH] Adding tree algorithms in haskell --- Haskell/treeDepth.hs | 7 +++++++ Haskell/treeInsert.hs | 14 ++++++++++++++ 2 files changed, 21 insertions(+) create mode 100644 Haskell/treeDepth.hs create mode 100644 Haskell/treeInsert.hs diff --git a/Haskell/treeDepth.hs b/Haskell/treeDepth.hs new file mode 100644 index 0000000..bdee042 --- /dev/null +++ b/Haskell/treeDepth.hs @@ -0,0 +1,7 @@ +data Tree t = Node t (Tree t) (Tree t) | Nilt deriving (Read, Show) + +depth :: Tree t -> Int +depth Nilt = 0 +depth (Node x tl tr) = max depthLeft depthRight + where depthLeft = (depth tl) + 1 + depthRight = (depth tr) + 1 \ No newline at end of file diff --git a/Haskell/treeInsert.hs b/Haskell/treeInsert.hs new file mode 100644 index 0000000..71801eb --- /dev/null +++ b/Haskell/treeInsert.hs @@ -0,0 +1,14 @@ +data Tree t = Node t (Tree t) (Tree t) | Nilt deriving (Read, Show) + +insert :: Ord t => Tree t -> t -> Tree t +insert Nilt x = Node x Nilt Nilt +insert (Node x treeL treeR) num = ins num x + where ins num x + | num < x = (Node x (insert treeL num) treeR) + | otherwise = (Node x treeL (insert treeR num)) + +-- Receive a tree and a list of numbers and insert them into the tree +insertList :: Ord t => Tree t -> [t] -> Tree t +insertList tree (x:[]) = insert tree x +insertList tree (x:xs) = insertList t xs + where t = insert tree x \ No newline at end of file