01 insert x Empty = N Empty x Empty 02 insert x (N l a r) | x < a = mkavl (N (insert x l) a r) 03 | x > a = mkavl (N l a (insert x r)) 04 05 mkavl t | a == 2 && b == 1 = lrrot t 06 | a == - 2 && c == 1 = rlrot t 07 | a == 2 = rrot t 08 | a == - 2 = lrot t 09 | otherwise = t 11 12 where 13 a = (hoe (ltree t)) - (hoe (rtree t)) 14 b = (hoe (rtree (ltree t)) - (hoe (ltree (ltree t)))) 15 c = (hoe (ltree (rtree t)) - (hoe (rtree (rtree t)))) |
Zum Einfügen der Elemente einer Liste in einen Baum bietet sich folgende
Methode an.
01 list2tree xs = l2t (reverse xs) 02 where l2t [] = Empty 03 l2t (x:xs) = insert x (list2tree xs) [ Source ] |