type bst{ int a; bst left; bst right; } endtype decl int in,opt; bst insert(bst h, int key); int inOrder(bst h); int preOrder(bst h); int postOrder(bst h); enddecl bst insert(bst h, int key) { begin if (h == null) then h = alloc(); h.a = key; h.left = null; h.right = null; else if (key < h.a) then h.left = insert(h.left, key); else if (key > h.a) then h.right = insert(h.right, key); endif; endif; endif; return h; end } int inOrder(bst h){ begin if(h!=null) then in=inOrder(h.left); write(h.a); in=inOrder(h.right); endif; return 1; end } int preOrder(bst h){ begin if(h!=null) then write(h.a); in=preOrder(h.left); in=preOrder(h.right); endif; return 1; end } int postOrder(bst h){ begin if(h!=null) then in=postOrder(h.left); in=postOrder(h.right); write(h.a); endif; return 1; end } int main() { decl int val,flag; bst Root; enddecl begin val = initialize(); Root = null; read(val); while(val!=0) do Root = insert(Root,val); read(val); endwhile; in = inOrder(Root); in = preOrder(Root); in = postOrder(Root); return 9; end }