Data Structures and Algorithms with Object-Oriented Design Patterns in Python
next up previous index

Removing Items from an M-Way Search Tree

The algorithm for removing items from an M-way search tree follows directly from the algorithm for removing items from a binary search tree given in Section gif. The basic idea is that the item to be deleted is pushed down the tree from its initial position to a node from which it can be easily deleted. Clearly, items are easily deleted from leaf nodes. In addition, consider an internal node of an M-way search tree of the form

displaymath64923

If both tex2html_wrap_inline63735 and tex2html_wrap_inline62823 are empty trees, then the key tex2html_wrap_inline63737 can be deleted from T by removing both tex2html_wrap_inline63737 and tex2html_wrap_inline62823, say. If tex2html_wrap_inline63735 is non-empty, tex2html_wrap_inline63737 can be pushed down the tree by swapping it with the largest key in tex2html_wrap_inline63735; and if tex2html_wrap_inline62823 is non-empty, tex2html_wrap_inline63737 can be pushed down the tree by swapping it with the smallest key in tex2html_wrap_inline62823.

Program gif gives the code for the withdraw method of the MWayTree class. The general form of the algorithm follows that of the withdraw method for the BinarySearchTree class (Program gif).

   program20972
Program: MWayTree class withdraw method.


next up previous index

Bruno Copyright © 2003, 2004 by Bruno R. Preiss, P.Eng. All rights reserved.