2016-11-22 12 views
0

私の知る限り、私のプログラムになるはずですが、私はrefというキーワードでは問題があります。 Insert()メソッドを使用する予定はありません。しかし、エラーが発生するたびにトラバースメソッドを使用しようとするのは苦労しています。私はおそらく私の主な方法を台無しにしたことを知っているが、それは実験し、それを働かそうとしているからだ。私はGetメソッドとSetterメソッドを持つNodeClassを持っていますが、問題は基本的にrefキーワードです。私は何が欠けていますか?文字列を追加しました。エラーが発生しました。バッファを使用しようとしましたが、エラーが発生します。C# - バイナリツリーの問題

BinaryTreeクラス -

class BinTree<T> where T : IComparable 
    { 
     private Node<T> root; 

     public BinTree() //creates an empty tree 
     { 
      root = null; 
     } 
     public BinTree(Node<T> node) //creates a tree with node as the root 
     { 
      root = node; 
     } 

     public void InOrder(ref string buffer) 
     { 
      inOrder(root, ref buffer); 
     } 

     private void inOrder(Node<T> tree, ref string buffer) 
     { 
      if (tree != null) 
      { 
       inOrder(tree.Left, ref buffer); 
       buffer += tree.Data.ToString() + ","; 
       inOrder(tree.Right, ref buffer); 
      } 

     } 

     public void Preorder(ref string buffer) 
     { 
      PreOrder(root, ref buffer); 
     } 

     public void PreOrder(Node<T> tree, ref string buffer) 
     { 
      if (tree != null) 
      { 
       buffer += tree.Data.ToString() + ","; 
       PreOrder(tree.Left, ref buffer); 
       PreOrder(tree.Right, ref buffer); 
      } 
     } 

     public void postOrder(ref string buffer) 
     { 
      PostOrder(root, ref buffer); 
     } 

     public void PostOrder(Node<T> tree, ref string buffer) 
     { 
      if (tree != null) 
      { 

       PostOrder(tree.Left, ref buffer); 
       PostOrder(tree.Right, ref buffer); 
       buffer += tree.Data.ToString() + ","; 
      } 
     } 
    } 

プログラムクラス -

class Program 
{ 
    static void Main(string[] args) 
    { 
     BinTree<int> tree = new BinTree<int>(); 

     Node<int> root = new Node<int>(6); 
     root.Left = new Node<int>(15); 
     root.Left.Right = new Node<int>(654); 

     tree.InOrder(ref , root.Data); 




     System.Console.WriteLine(); 
     Console.ReadLine(); 
    } 
} 

誰かが、おそらく私を助けてもらえますか?ありがとうございました。

明らかに謝罪します。

+0

期待される出力は「15,654,6」ですか?それは私が少し掃除して得たものです。 – jrbeverly

+0

それは正しいです。トラバースメソッドを使用しています。 inOrder、PreOrder、およびPostOrderです。 :) – JavaScriptGrasshopper

+0

これは私が現在作業しているもの:https://dotnetfiddle.net/9glXXY – jrbeverly

答えて

0

上記の一般的なチェーンから:

  • あなたはそれ以外の場合はinOrder方法で何かをすることはできませんbinTreerootノードを渡す必要があります。 (BinTree<int> tree = new BinTree<int>();
  • inOrderメソッドコールに渡すにはstringが必要です。あなたは、パフォーマンスを向上させ、調整とコードのコピーが含まれていますref

fiddleへの依存を取り除くためにStringBuilderを使用することができます。

+0

答え、故障、例をありがとう。 :) – JavaScriptGrasshopper