C# - 二叉树问题

C# - Binary Tree Issues

据我所知,我的程序 应该 可以工作,但是,我在使用 ref 关键字时遇到了困难。我们还不希望使用 Insert() 方法。但是,我很难尝试使用遍历方法,因为每次出现错误时,都是关于 ref 缺少参数或其他原因。我知道我可能搞砸了我的 Main 方法,但那是由于试验并试图让它工作。我确实有一个带有 Get 和 Setter 方法的 NodeClass,但是,问题本质上是 ref 关键字。我错过了什么?我添加了字符串但出现错误,我尝试使用缓冲区时出现错误。

二叉树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() + ",";
            }
        }
    }

计划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();
    }
}

有人可以帮助我吗?谢谢。

如果有明显的问题,请提前致歉。

来自上述公共链:

  • 您需要将 root 节点传递给 binTree 否则它将无法在 inOrder 方法中执行任何操作。 (BinTree<int> tree = new BinTree<int>();)
  • 您需要 string 才能传递到 inOrder 方法调用中。您可以使用 StringBuilder 来提高性能并消除对 ref
  • 的依赖

fiddle 包含经过调整的代码副本。