function merge ( a, b : tree ) : tree;
var temp : tree;
begin
if a=nil then merge := b
else if b=nil then merge := a
else begin
if a^.k < b^.k then begin
temp := a; a := b; b := temp end;
a^.right := merge( a^.right, b );
if a^.left <> nil then
if a^.left^.k < a^.right^.k then begin
temp := a^.right;
a^.right := a^.left;
a^.left := temp
end
end
end;
|