| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- const
- znak = ['/','*','-','+'];
- type PTree = ^Tree;
- Tree = record
- left,rigth : PTree;
- key : char;
- end;
- var
- Tr : PTree;
- p : pointer;
- Procedure BuildTree(T : PTree; s : string; var n : integer);
- begin
- t^.key:=s[n];
- if (s[n] in znak) then
- begin
- if not(t^.key in znak) then Write('Error');
- new(t^.rigth);
- dec(n);
- BuildTree(t^.rigth,s,n);
- if t^.key <> '-' then
- begin
- dec(n);
- if not(t^.key in znak) then Write('Error');
- new(t^.left);
- BuildTree(t^.left,s,n);
- end
- else t^.left:=nil;
- end
- else
- begin
- t^.left:=nil; t^.rigth:=nil;
- end;
- end;
- Procedure post2pref(var s1 : string; var n : integer; T : PTree);
- begin
- if T <> nil then
- begin
- inc(n);
- post2pref(s1,n,t^.rigth);
- inc(n);
- post2pref(s1,n,t^.left);
- s1:=s1+t^.key;
- end;
- end;
- Procedure OutPut(out,s : string);
- var
- f : text;
- i : integer;
- begin
- assign(f,out); append(f);
- WriteLn(f);
- Write(f,'Preorder: ');
- for i:=length(s) downto 1 do Write(f,s[i]);
- close(f);
- end;
- Procedure ReadFile(inp,out : string);
- var
- f,f1 : text;
- s,s1 : string;
- x : integer;
- begin
- assign(f,inp); reset(f);
- assign(f1,out); rewrite(f1);
- ReadLn(f,s);
- WriteLn(f1,'Postorder: ',s);
- x:=length(s);
- BuildTree(Tr,s,x);
- x:=1;
- s1:='';
- WriteLn;
- Post2pref(s1,x,Tr);
- { if length(s1) <> length(s) then s1:='*******';}
- close(f1);
- Output('output.txt',s1);
- close(f);
- end;
- begin
- mark(p);
- new(Tr);
- tr^.left:=nil; tr^.rigth:=nil;
- ReadFile('input.txt','output.txt');
- release(p);
- end.
|