Advertisement
agul

20130514 :: problem 9

May 13th, 2013
142
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 1.33 KB | None | 0 0
  1. type   
  2.     pnode = ^node;
  3.     node = record
  4.         s : string;
  5.         left, right : pnode;
  6.     end;
  7.  
  8. var
  9.     ls, i : longint;
  10.     ch : char;
  11.     s : string;
  12.     root : pnode;
  13.  
  14.     procedure tooLong();
  15.     begin
  16.         writeln('ERROR! Maximal string length is 6.');
  17.         halt(0);
  18.     end;
  19.  
  20.     procedure insert(cur : pnode; s : string);
  21.  
  22.     var
  23.         tmp : pnode;
  24.  
  25.         function createNode(s : string) : pnode;
  26.         begin
  27.             new(tmp);
  28.             tmp^.s := s;
  29.             tmp^.left := nil;
  30.             tmp^.right := nil;
  31.             createNode := tmp;
  32.         end;
  33.  
  34.     begin
  35.         if (cur = nil) then begin
  36.             root := createNode(s);
  37.             exit;
  38.         end;
  39.         if (s < cur^.s) then begin
  40.             if (cur^.left = nil) then cur^.left := createNode(s) else insert(cur^.left, s);
  41.             exit;
  42.         end;
  43.         if (cur^.s < s) then begin
  44.             if (cur^.right = nil) then cur^.right := createNode(s) else insert(cur^.right, s);
  45.             exit;
  46.         end;
  47.     end;
  48.  
  49.     procedure printTree(cur : pnode);
  50.     begin
  51.         if (cur = nil) then exit;
  52.         printTree(cur^.left);
  53.         writeln(cur^.s);
  54.         printTree(cur^.right);
  55.         dispose(cur);
  56.     end;
  57.  
  58. begin
  59.     read(ch);
  60.     s := '$$$$$$';
  61.     root := nil;
  62.     while (ch <> '.') do begin
  63.         ls := 0;
  64.         for i := 1 to 6 do
  65.             s[i] := #0;
  66.         if (ch = ',') then read(ch);
  67.         while (ch <> '.') and (ch <> ',') do begin
  68.             inc(ls);
  69.             if (ls > 6) then tooLong();
  70.             s[ls] := ch;
  71.             read(ch);
  72.         end;
  73.         insert(root, s);
  74.     end;
  75.     printTree(root);
  76. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement