BinTree.BinaryTree <t>需要1个类型的参数?</t>

时间:2012-08-08 18:25:06

标签: c# tree binary-tree binary-search-tree

修改 填充树的最佳方法是什么?我现在正在添加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'的定义,并且没有扩展方法'node'接受类型'BINTREE.BinTree'的第一个参数可以找到(你是吗?)缺少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);                                      
            }
        }

2 个答案:

答案 0 :(得分:3)

这里有几件事情。 特定错误是因为您引用了没有泛型参数的类BinaryTree,或者您在类定义中看到的T

您的代码还有其他问题:

1)如果不实例化类,则无法访问非静态成员。 AKA类定义不知道您要操作哪些数据。

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

您的结束代码应如下所示:

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

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

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

答案 1 :(得分:0)

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