Решенеия на задачите от упражненията

Решения на задачите от 12.01.07

Решения на задачите от 12.01.07

by Калин Николов -
Number of replies: 2
Решения на задачите от 12.01.07
In reply to Калин Николов

Re: Решения на задачите от 12.01.07

by Боян Киров -

data Seasons = Spring | Summer | Autumn | Winter
 deriving (Show,Eq)
data Person = MakePerson String String Int|SofiaPerson String Int
 deriving (Show)
getphone (MakePerson name addr phone) = phone

--data IntBinTree = Empty | Node Int IntBinTree  IntBinTree
--                      deriving (Show,Eq)
data Btree a = Empty |Node a (Btree a) (Btree a)
  deriving (Show,Eq)
d=Node 5 (Node 6 (Empty) (Node 7 Empty Empty)) (Node 4 (Node 2 Empty Empty) (Empty))
tr=Node 50 (Node 30 (Node 10 (Empty) (Node 20 Empty Empty)) (Node 40 Empty Empty) ) (Empty)

sumTree Empty = 0
sumTree (Node n l r) = n + sumTree l + sumTree r

mListFTree Empty = []
mListFTree (Node n l r) = n:(mListFTree l ++ mListFTree r)

sumLeaf Empty = 0
sumLeaf (Node n Empty Empty) = n
sumLeaf (Node n l r) = sumLeaf l + sumLeaf r

height Empty = 0
height (Node n l r) = 1 + (max (height l) (height r))

--- Vsi4ki elementi na k-ti red v durvo

lvn k Empty = []
lvn 0 (Node n l r) = [n]
lvn k (Node n l r) = (lvn (k-1) l) ++ (lvn (k-1) r)

--namira minelement v dvoi4no naredeno darvo

minel (Node n Empty _) = n
minel (Node n l r) = minel l

-- dobavq element v dvoi4no naredeno darvo
addel p Empty = Node p Empty Empty
addel p (Node n l r)
 |(p<=n) = Node n (addel p l) r
 |otherwise =  Node n l (addel p r)
 
--Iztirva element ot dvoi4no naredeno darvo
delel _ Empty = Empty
delel p (Node n l r)
 |(p<n) = Node n (delel p l) r
 |(p>n) = Node n l (delel p r)
 |otherwise = delroot p (Node n l r)

delroot p (Node n Empty Empty) = Empty
delroot p (Node n Empty l) = l
delroot p (Node n r Empty) = r
delroot p (Node n l r) = Node (minel r) l (delel (minel r) r)

tupp = Node (5,100) (Node (10,70) (Node (20,40) Empty Empty) (Node (6,71) Empty Empty)) (Node (1,200) Empty Empty)

--Nai golemiq interval koito sudurja x
elm x Empty = False
elm x (Node (a,b) l r)
 | (x>a)&&(x<b) = True
 | otherwise = elm x r

--Nai malkiq interval koito sudurja x (ne raboti vse o6te)

--fukciq koqto dava korena na durvo
getRoot Empty = (0,0)
getRoot (Node n _ _) = n

minInt Empty _ = (0,0)
minInt (Node (a,b) Empty r) x
 |(x>a)&&(x<b) = (a,b)
 |otherwise = minInt r x
minInt (Node (a,b) l r) x
 |((x>a)&&(x<b))&&((x>first (getRoot l))&&(x<second (getRoot l)))= minInt l x
 |((x>a)&&(x<b))= (a,b)
 |otherwise = minInt r x

 

 

In reply to Калин Николов

Re: Решения на задачите от 12.01.07

by Радослава Димитрова -

data BTree a = Empty | Node a (BTree a) (BTree a)
                      deriving (Show)
n=Node 50 (Node 30 (Node 10 Empty (Node 20 Empty Empty)) (Node 40 Empty Empty)) Empty

-- min element na durvo  
minTree (Node v Empty _ )=v
minTree (Node _ l _ )=minTree l
 
--dobavq element
insertBot Empty x=Node x Empty Empty
insertBot (Node v l r) x
                        |v<=x= Node v l(insertBot r x)

--iztriva element                        |otherwise=Node v (insertBot l x) r
delBot Empty x=Empty
delBot (Node v l r) x
                     |v<x=Node v l (delBot r x)
                     |v>x=Node v (delBot l x) r
                     |otherwise=deleteRoot(Node v l r)
deleteRoot (Node v Empty Empty)=Empty
deleteRoot (Node v l Empty)=l
deleteRoot (Node v Empty r)=r
deleteRoot (Node v l r)=Node (minTree r) l (delBot r (minTree r))
                    
                    

t=Node (5,100) (Node (10,70) (Node (20,60) Empty Empty) (Node (6,71) Empty Empty)) (Node (1,200) Empty Empty)