Procedures and Functions  117  ll.A.4.  Procedural parameters  A  binary tree  is a data structure that is naturally defined in recursive  terms and processed by recursive algorithms.  It  consists of a finite set of  nodes that is either empty or else consists of a node (the root) with two  disjoint binary trees, called the left and right subtrees [Reference 6].  Recursive  procedures  for  generating  and  traversing  binary  trees  naturally reflect this mode of definition.  Program 11.6 builds a binary tree and traverses it in pre-, in-, and  postorder. The tree is specified in preorder, i.e., by listing the nodes  (single letters in this case) starting at the root and following first the left  and then the right subtrees so that the input corresponding to Figure ll.i  IS:  where a point signifies an empty subtree.  abc .. de .. fg ... hi. . jkl. .m .. n ..  We  can rewrite  Program  11.6  to  illustrate passing procedures as  parameters. Procedural parameters appear in the formal parameter list  of  procedures  and  functions  as  procedure  headings.  In  the  corresponding actual parameter list only the procedure identifier must  be specified. Program 11.7 illustrates this as well as the passing of  actual string values to conform ant-array parameters.  ab+cd-*  abc*+d­ ab+c*d­ abcd-*+  aa*a*a*  bcdca*a*+*b*+a+  begin  { PostFix  Find;  repeat  Expression;  Writeln(Output)  until Ch  =  ,  .';  13:  end  { PostFix  } .  Produces as results: 