2016-11-22 5 views
0

제 프로그램의 이되어야합니다. 그러나 ref 키워드를 사용하는 데 어려움이 있습니다. 아직 Insert() 메소드를 사용할 것으로 예상되지는 않습니다. 그러나, 나는 오류가 발생할 때마다 트래버스 방법을 사용하려고 애쓰는 데 어려움을 겪고있다. 나는 아마 내가 Main Method를 엉망으로 만든 것을 알고있다. 그러나 그것은 실험을하고 그것을 작동 시키려고하기 때문이다. 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