tree 'begin''comment'insert,sort,& flatten an integer tree; 'integer''array'item,left,right[1:100]; 'integer'freep,nil,t,count,count1,a; 'real' r; 'integer''procedure'node(x,l,r);'comment'creates a node; 'value'x,l,r;'integer'x,l,r; 'begin'freep:=freep+1; item[freep]:=x; left[freep]:=l; right[freep]:=r; node:=freep; 'end'; 'procedure'null;'external'; 'real' 'procedure' random(i,n); 'value'n; 'integer' i,n; 'external'; 'procedure'insert(x,t);'comment't is a recursive marker; 'value'x;'integer'x,t;'comment' nb t called by name; 'if' t=nil 'then' t:=node(x,nil,nil) 'else' 'if' x 'le' item[t] 'then' insert (x,left[t]) 'else' insert(x,right[t]); 'procedure'flatten(t,count);'comment'flattens a tree; 'value' t; 'integer' t,count; 'comment' count by name; 'if' t 'ne' nil 'then' 'begin' flatten(left[t],count); print(item[t],3,1); count:=count+1; 'if' count / 10 = count 'div' 10 'then' newline; flatten(right[t],count); 'end'; 'comment' main program; a:=999999; nil:=0; t:=nil; freep:=0; 'for' count1:=1 'step' 1 'until' 100 'do' 'begin' r:=random(a,1); insert(entier(90*r),t); 'end'; writetext(<the_inserted_,sorted,flattened_tree_is_:- <2c>>); count:=0; flatten(t,count); 'end';