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; RETURN TRUE
            END;
         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 Andreas Borchert, in HTML konvertiert am 29.06.1999