37 lines
928 B
Plaintext
37 lines
928 B
Plaintext
EXTERNAL CLASS AVL;
|
|
|
|
AVL
|
|
BEGIN
|
|
|
|
KEY CLASS INTEGERKEY(I); INTEGER I;
|
|
BEGIN
|
|
BOOLEAN PROCEDURE LESS (K); REF(KEY) K; LESS := I < K QUA INTEGERKEY.I;
|
|
BOOLEAN PROCEDURE EQUAL(K); REF(KEY) K; EQUAL := I = K QUA INTEGERKEY.I;
|
|
END INTEGERKEY;
|
|
|
|
PROCEDURE DUMP(ROOT); REF(NODE) ROOT;
|
|
BEGIN
|
|
IF ROOT =/= NONE THEN
|
|
BEGIN
|
|
DUMP(ROOT.LINK(0));
|
|
OUTINT(ROOT.DATA QUA INTEGERKEY.I, 0); OUTTEXT(" ");
|
|
DUMP(ROOT.LINK(1));
|
|
END
|
|
END DUMP;
|
|
|
|
INTEGER I;
|
|
REF(NODE) TREE;
|
|
OUTTEXT("Empty tree: "); DUMP(TREE); OUTIMAGE;
|
|
|
|
FOR I := 3, 1, 4, 1, 5 DO
|
|
BEGIN OUTTEXT("Insert "); OUTINT(I, 0); OUTTEXT(": ");
|
|
INSERT(TREE, NEW INTEGERKEY(I)); DUMP(TREE); OUTIMAGE;
|
|
END;
|
|
|
|
FOR I := 3, 1 DO
|
|
BEGIN OUTTEXT("Remove "); OUTINT(I, 0); OUTTEXT(": ");
|
|
REMOVE(TREE, NEW INTEGERKEY(I)); DUMP(TREE); OUTIMAGE;
|
|
END;
|
|
|
|
END.
|