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


Pagodas deletion (Pascal version available)


tree delete( pq ) tree pq; { tree le, ri; if ( pq==NULL ) Error /*** Deletion on empty queue ***/; else { /*** Find left descendant of root ***/ if ( pq->left == pq ) le = NULL; else { le = pq->left; while ( le->left != pq ) le = le->left; le->left = pq->left; }; /*** Find right descendant of root ***/ if ( pq->right == pq ) ri = NULL; else { ri = pq->right; while ( ri->right != pq ) ri = ri->right; ri->right = pq->right; }; /*** merge them ***/ return( merge( le, ri ) ); } };

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



© Addison-Wesley Publishing Co. Inc.