2016-11-22 125 views
0

據我所知,我的程序應該工作,但是,我在編號關鍵字有困難。我們不希望使用Insert()方法。但是,我每次遇到錯誤時都很難使用遍歷方法,這是關於參數丟失或其他問題的參考。我知道我可能已經搞亂了我的主要方法,但是這是由於嘗試並試圖使其工作。我確實有一個帶有Get和Setter方法的NodeClass,但是,問題本質上就是ref關鍵字。我錯過了什麼?我添加了字符串我得到一個錯誤,我試圖使用緩衝區我得到一個錯誤。C# - 二叉樹問題

二叉樹講座

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

從上面的共同鏈:

  • 您需要的root節點傳遞到binTree否則將不能夠做到在inOrder方法什麼。 (BinTree<int> tree = new BinTree<int>();
  • 您需要一個string才能進入inOrder方法調用。您可以使用StringBuilder提高性能並刪除依賴ref

fiddle包含調整代碼的副本。

+0

謝謝你的答案,細節和例子。 :) – JavaScriptGrasshopper