treetop() =>  treetop(node(read(TTY)))
	where write(TTY, 'Enter numbers, ending with period:').

node(x) => [t1, x, t2].

treetop(t) => if eq(item, '.') then print(t) else treetop(t)
		where
			item = read(TTY);
			x = if eq(item, '.') then 0 else insert(t, item).

print(t) => ans
		where [[[]|ans]|[]] <- tree2list(t, [[[]|tail]|tail]).

insert([left, x, right], x) => [left, x, right].

insert([left, val, right], x) => 
		if x<val then insert(left, x) else insert(right, x).

tree2list([left, val, right], [l|m]) =>  tree2list(right, [l | x])
		where var(left) = false; var(right) = false;
			[t | u] <- tree2list(left, [l | m]);
			     u   = [val|x].

tree2list([left, val, right], [l|m]) =>  tree2list(right, [l | x])
		where var(left) = true; var(right) = false;
			  m = [val|x].

tree2list([left, val, right], [l|m]) =>  [l|x]
		where var(right) = true; var(left) = false;
			[t | u] <- tree2list(left, [l|m]);
			     u = [val|x].

tree2list([left, val, right], [l|m]) =>  [l|x]
		where var(right) = true; var(left) = true;
			     m = [val|x].

