Procedures and Functions  121  procedure Enter(var P: Ptr);  begin  Read(Input,  Ch); Write (Output,  Ch);  if Ch  <>  '.'  then  begin  New(P);  PI.Info .= Chi Enter(pI.LLink); Enter (PI.RLink)  end  else  P  := nil  end { Enter };  procedure WriteNodes  var  (procedure TreeOperation(Start: Ptr); Root: Ptr;  Title: packed array  [M .. N:  Positive) of Char);  c:  Positive;  begin  Writeln(Output);  for C := M to N do Write (Output,  Title[C));  Writeln(Output); Writeln(Output);  TreeOperation(Root); Writeln(Output)  end { WriteNodes };  begin  Traversa12  Enter(Root); Writeln(Output);  WriteNodes(PreOrder, Root,  'Nodes listed in preorder:');  WriteNodes(InOrder, Root,  'Nodes listed inorder:');  WriteNodes(PostOrder, Root,  'Nodes listed in postorder:')  end { Traversa12  } .  Produces as results:  abc .. de .. fg ... hi. . jkl. .m .. n ..  Nodes listed in preorder:  abcdefghijklmn  Nodes listed inorder:  cbedgfaihlkmjn  Nodes listed in postorder:  cegfdbilmknjha 