Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- UNIT TreeStorage;
- INTERFACE
- {PROCEDURE InsertInTree(VAR Ptr: NodePtr; Str: LexemType);
- PROCEDURE PrintTree(Ptr: NodePtr; VAR F: TEXT);
- PROCEDURE DeleteTree(Ptr: NodePtr); }
- IMPLEMENTATION
- USES
- Types;
- TYPE
- NodePtr = ^NodeType;
- NodeType = RECORD
- Key: LexemType;
- Left, Right: NodePtr;
- Count: INTEGER
- END;
- VAR
- Root: NodePtr;
- CountLexem: INTEGER;
- PROCEDURE InsertInTree(VAR Ptr: NodePtr; Str: LexemType);
- BEGIN {InsertInTree}
- IF Ptr = NIL
- THEN
- BEGIN {Ñîçäàåì ëèñò ñî çíà÷åíèåì Str}
- NEW(Ptr);
- Ptr^.Key := Str;
- Ptr^.Left := NIL;
- Ptr^.Right := NIL;
- Ptr^.Count := 1;
- INC(CountLexem)
- END
- ELSE
- IF Ptr^.Key > Str
- THEN
- InsertInTree(Ptr^.Left, Str)
- ELSE
- IF Ptr^.Key < Str
- THEN
- InsertInTree(Ptr^.Right, Str)
- ELSE
- INC(Ptr^.Count)
- END; {InsertInTree}
- PROCEDURE PrintTree(Ptr: NodePtr; VAR F: TEXT);
- BEGIN {PrintTree}
- IF Ptr <> NIL
- THEN {Ïå÷àòàåò ïîääåðåâî ñëåâà, âåðøèíó, ïîääåðåâî ñïðàâà}
- BEGIN
- PrintTree(Ptr^.Left, F);
- WRITELN(Ptr^.Key, ' ', Ptr^.Count);
- PrintTree(Ptr^.Right, F)
- END
- END; {PrintTree}
- {PROCEDURE PrintOutFile(VAR OutFile: TEXT);
- BEGIN {PrintOutFile}
- {PrintTree(Root, OutFile)
- END; {PrintOutFile}
- PROCEDURE DeleteTree(Ptr: NodePtr); {î÷èñòêà ïàìÿòè}
- BEGIN {DeleteTree}
- IF Ptr <> NIL
- THEN {Óäàëÿåò ïîääåðåâî ñëåâà, âåðøèíó, ïîääåðåâî ñïðàâà}
- BEGIN
- DeleteTree(Ptr^.Left);
- DeleteTree(Ptr^.Right);
- DISPOSE(Ptr)
- END
- END; {DeleteTree}
- BEGIN
- Root := 0;
- CountLexem := 0
- END. {UNIT TreeStorage}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement