2016-09-25 18 views
0

私は、バイナリ検索ツリーを作成しました:私は次のリストを渡ししようとしているカスタムデータ型でバイナリ検索ツリーを使用していますか?

data SearchTree a = Empty | Node a (SearchTree a) (SearchTree a) deriving (Show, Eq, Ord) 

insertTreeElements :: (Ord a) => a -> SearchTree a -> SearchTree a --Create binary tree input method 
insertTreeElements x Empty = Node x Empty Empty 
insertTreeElements x (Node a left right) 
    | x == a  = Node x left right 
    | x < a = Node a (insertTreeElements x left) right 
    | x > a  = Node a left (insertTreeElements x right) 

makeTree :: (Ord a) => (a -> SearchTree a -> SearchTree a) -> SearchTree a -> [a] -> SearchTree a --Create binary tree 
makeTree iTE Empty li = foldr iTE Empty li 

を:

Type Age = Int 
mylist = [Age 12, Age 100, Age 2, Age 3, Age 43] 

出力が正しくありませんしかし、それは木がベースの注文はありません年齢の大きさについて? insertTreeElementsを編集して「年齢x」を使用できるようにするにはどうすればよいですか?

答えて

1

おそらくあなたが持っている最大の問題は、このいずれかになります。あなたが二回leftを書く

| x > a  = Node a left (insertTreeElements x left) 

お知らせ - それらのおそらく1はrightでなければなりません。

関連する問題