[Home]
[Chapter]
[Contents]
[Previous Algorithm]
[Next Algorithm]


Leftist trees deletion


function merge( a, b : tree ) : tree; begin if a = nil then merge := b else if b = nil then merge := a else if a^.k > b^.k then begin a^.right := merge( a^.right, b ); fixdist( a ); merge := a end else begin b^.right := merge( a, b^.right ); fixdist( b ); merge := b end end; procedure delete ( var pq : tree ); begin if pq = nil then Error {*** delete on an empty queue ***} else pq := merge( pq^.left, pq^.right ) end;

C source (516.del.c) Pascal source (516.del.p)



© Addison-Wesley Publishing Co. Inc.