Sample ML CODE
datatype 'a tree = EMPTY | LEAF of 'a | NODE of 'a * 'a tree * 'a tree;
val t = NODE(7,EMPTY,EMPTY);
fun height EMPTY = 0 |
height (LEAF _) = 1 |
height (NODE(i,l,r)) = 1 + Int.max(height(l),height(r));
height(t);
fun insertTree (item: int) EMPTY = LEAF(item) |
insertTree (item: int) (LEAF i) = if (item = i) then LEAF(i) else
if (item < i) then NODE(i,(LEAF item),EMPTY) else NODE(i,EMPTY,(LEAF item)) |
insertTree (item:int) (NODE (i,l,r)) = if (item = i) then NODE(i,l,r) else
if (item < i) then NODE(i,(insertTree item l),r) else NODE(i,l,(insertTree item r));
fun listToTree func [] T = T |
listToTree func (a::l) T = listToTree func l (func a T);
val iTree = listToTree insertTree [1,3,8,34,2,91,100,45] EMPTY;
fun append [] l = l |
append (a::b) l = a::(append b l);
fun nodeList EMPTY = [] |
nodeList (LEAF _) = [] |
nodeList (NODE(i,l,r)) = (append (nodeList l) (i::(nodeList r)));
nodeList iTree;