二分木の書き出しで書き込んでいた者です。
まだできていなく、再度お伺いしたく思います。

結局、
tree(配列Array){
 配列Arrayを2つの配列array1とarray2に分けて、全ての分け方に対して、{
  tree1=tree(array1);
  tree2=tree(array2);
  全てのtree1の要素t1とtree2の要素t2に対して{
   配列Treeに"(t1, t2)"を加える
  }
 }
 return Tree;
}
と考えているのですが、関数の配列の受け渡しがうまくいきません。
まだちゃんと書いていませんが、これだと、
再帰で呼び出した関数内部で呼び出しもとのTreeを書き換えてしまうようです。
どなたか、こんな感じで(でなくてもいいので)
書いていただけたら助かります。

よろしくお願いします。