Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- type
- pnode = ^node;
- node = record
- s : string;
- left, right : pnode;
- end;
- var
- ls, i : longint;
- ch : char;
- s : string;
- root : pnode;
- procedure tooLong();
- begin
- writeln('ERROR! Maximal string length is 6.');
- halt(0);
- end;
- procedure insert(cur : pnode; s : string);
- var
- tmp : pnode;
- function createNode(s : string) : pnode;
- begin
- new(tmp);
- tmp^.s := s;
- tmp^.left := nil;
- tmp^.right := nil;
- createNode := tmp;
- end;
- begin
- if (cur = nil) then begin
- root := createNode(s);
- exit;
- end;
- if (s < cur^.s) then begin
- if (cur^.left = nil) then cur^.left := createNode(s) else insert(cur^.left, s);
- exit;
- end;
- if (cur^.s < s) then begin
- if (cur^.right = nil) then cur^.right := createNode(s) else insert(cur^.right, s);
- exit;
- end;
- end;
- procedure printTree(cur : pnode);
- begin
- if (cur = nil) then exit;
- printTree(cur^.left);
- writeln(cur^.s);
- printTree(cur^.right);
- dispose(cur);
- end;
- begin
- read(ch);
- s := '$$$$$$';
- root := nil;
- while (ch <> '.') do begin
- ls := 0;
- for i := 1 to 6 do
- s[i] := #0;
- if (ch = ',') then read(ch);
- while (ch <> '.') and (ch <> ',') do begin
- inc(ls);
- if (ls > 6) then tooLong();
- s[ls] := ch;
- read(ch);
- end;
- insert(root, s);
- end;
- printTree(root);
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement