Merging of binary priority queues


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;

Pascal source (516b.merg.p)



© Addison-Wesley Publishing Co. Inc.