Iterationen im sortierten binären Baum II

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

SortedBinaryTrees.om
PROCEDURE Next(tree: Tree; key: Objects.Object;
               VAR object: Objects.Object) : BOOLEAN;
   (* returns lowest object in tree that is > key *)
   VAR
      node: Node;

   PROCEDURE NextNode(node: Node) : BOOLEAN;
   BEGIN
      IF node # NIL THEN
         IF tree.compare(key, node.object) < 0 THEN
            IF ~NextNode(node.left) THEN
               object := node.object;
            END;
            RETURN TRUE
         ELSE
            RETURN NextNode(node.right)
         END;
      END;
      RETURN FALSE
   END NextNode;

BEGIN (* Next *)
   ASSERT(tree.comparable(key));
   RETURN NextNode(tree.root)
END Next;

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