据我所知,我的程序应该工作,但是,我在使用 ref 关键字时遇到了困难。我们不应该使用Insert()方法。但是,每次我收到错误时,我都很难尝试使用遍历方法,这与参数缺失或其他内容有关。我知道我可能搞砸了我的Main方法,但那是因为试验并试图让它工作。我确实有一个带有Get和Setter方法的NodeClass,但问题基本上是ref关键字。我错过了什么?我添加了字符串我得到一个错误,我试图使用缓冲区我得到一个错误。
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 :(得分:0)
来自上述共同链:
root
节点传递到binTree
,否则将无法在inOrder
方法中执行任何操作。 (BinTree<int> tree = new BinTree<int>();
)string
进入inOrder
方法调用。您可以使用StringBuilder来提高效果并消除对ref
fiddle包含带有调整的代码副本。