0

编辑: 填充树的最佳方法是什么?我现在正在添加 10 个随机数

BinTree<int> myTree = new BinTree<int>();
            int Value;

            Console.WriteLine("Inserting Values:  ");
            Random random = new Random();
            for (int i = 1; i <= 10; i++)
            {
                Value = random.Next(100);
                Console.Write(Value + " ");

               myTree.node(Value);
            }

> myTree.node(Value);

不断出错,并显示“错误 1 ​​'BINTREE.BinTree' 不包含 'node' 的定义,并且找不到接受类型 'BINTREE.BinTree' 的第一个参数的扩展方法 'node'(您是否缺少 using 指令或装配参考?)“

 class BinTree<T> where T : IComparable
    {
        private NODE<T> root;

        public BinTree()
        {
            root = null;
        }

        public BinTree(NODE<T> node)
        {
            root = node;
        }



//order algorithms
        public void PreOrder()
        {
            PREORDER(root);
        }

        private void PREORDER(NODE<T> tree)                          
        {                                                                
            if (tree != null)
            {
                Console.Write(tree.Data);                              
                PREORDER(tree.Left);                                   
                PREORDER(tree.Right);                                  
            }
        }

        public void PostOrder()
        {
            POSTORDER(root);
        }

        private void POSTORDER(NODE<T> tree)                            
        {                                                                 
            if (tree != null)
            {
                POSTORDER(tree.Left);                                     
                POSTORDER(tree.Right);                                    
                Console.WriteLine(tree.Data);                             
            }
        }

        public void InOrder()
        {
            INORDER(root);
        }

        private void INORDER(NODE<T> tree)                              
        {                                                                 
            if (tree != null)
            {
                INORDER(tree.Left);                                       
                Console.WriteLine(tree.Data);                             
                INORDER(tree.Right);                                      
            }
        }
4

2 回答 2

3

这里发生了几件事。具体错误是因为您引用的类BinaryTree没有通用参数,或者T您在类的定义中看到。

但是,您的代码还有其他问题:

1)您不能在不实例化类的情况下访问非静态成员。AKA 类定义不知道你要操作什么数据。

2) 您正在尝试调用inOrder无法访问的私有例程。注意小写和大写 i 的区别。你想打电话给公众InOrder()

您的最终代码应如下所示:

BinaryTree<int> myBinaryTree = new BinaryTree<int>();
myBinaryTree.InOrder();

但是,此代码将不起作用,因为您有一个未填充的树(即使根节点为空)。

编辑:不工作是指不会产生任何输出。查看 BinaryTree 的类定义,您将需要添加填充树的方法,以便有效地测试打印树的方法。

于 2012-08-08T18:37:18.610 回答
0

因为它是通用的,所以你必须传入你看到的类型,这是通过类型很重要的对象使用的类型。

于 2012-08-08T18:37:35.730 回答