Löschen in den sortierten binären Baum

 [Vorheriges Kapitel]  [Vorherige Seite]  [Inhaltsverzeichnis]  [Nächste Seite]  [Nächstes Kapitel]

SortedBinaryTrees.om
PROCEDURE Delete(tree: Tree; key: Objects.Object);
   (* precondition: key must be comparable to
      other objects of tree;
      deletes object out of the tree that is identical
      to key if present
   *)
   VAR
      parent, node: Node;

   PROCEDURE DeleteNode(VAR node: Node);
      (* ... naechste Folie ... *)
   END DeleteNode;

BEGIN (* Delete *)
   ASSERT(tree.comparable(key));
   IF ~Find(tree, key, parent, node) THEN RETURN END;
   IF parent = NIL THEN
      DeleteNode(tree.root);
   ELSIF parent.left = node THEN
      DeleteNode(parent.left);
   ELSE
      DeleteNode(parent.right);
   END;
END Delete;

*Zu beachten ist hier, daß der node-Parameter von DeleteNode ein VAR-Parameter ist. Entsprechend kann der verweisende Zeiger des Elternteils modifiziert werden.
 

 [Vorheriges Kapitel]  [Vorherige Seite]  [Inhaltsverzeichnis]  [Nächste Seite]  [Nächstes Kapitel]
Copyright © 1999 Andreas Borchert, in HTML konvertiert am 29.06.1999