Nach meinem besten Wissen mein Programm sollte arbeiten, aber ich habe Schwierigkeiten mit dem Ref Schlüsselwort. Es wird noch nicht erwartet, dass wir eine Insert() - Methode verwenden. Allerdings habe ich Schwierigkeiten, die Traverse-Methoden zu verwenden, da jedes Mal, wenn ein Fehler auftritt, der Ref entweder ein Argument fehlt oder etwas anderes. Ich weiß, dass ich wahrscheinlich meine Main-Methode vermasselt habe, aber das liegt daran, zu experimentieren und zu versuchen, es zum Laufen zu bringen. Ich habe eine NodeClass mit Get und Setter-Methoden, das Problem ist jedoch im Wesentlichen das Schlüsselwort ref. Was vermisse ich? Ich habe einen String hinzugefügt Ich bekomme einen Fehler, ich habe versucht, den Puffer zu verwenden Ich erhalte einen Fehler.C# - Binary Tree Issues
BinaryTree Class-
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() + ",";
}
}
}
Programm Class-
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();
}
}
Könnte jemand mir vielleicht helfen? Vielen Dank.
Entschuldigung im Voraus, wenn es etwas offensichtlich ist.
Ist die erwartete Ausgabe '15,654,6,'? Als das ist, was ich bekomme, nachdem ich es ein bisschen aufgeräumt habe. – jrbeverly
Das ist richtig. Ich verwende Traverse-Methoden. InOrder, PreOrder und PostOrder. :) – JavaScriptGrasshopper
Das, woran ich gerade arbeite: https://dotnetfiddle.net/9glXXY – jrbeverly