C# BinTree.BinaryTree<;T>;需要1个类型参数吗?

C# BinTree.BinaryTree<;T>;需要1个类型参数吗?,c#,tree,binary-tree,binary-search-tree,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++)

编辑: 填充树的最佳方式是什么?我现在加上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);
            }
“错误1”BINTREE.BINTREE“不包含“节点”的定义,并且找不到接受“BINTREE.BINTREE”类型的第一个参数的扩展方法“node”(是否缺少using指令或程序集引用?) "

类BinTree,其中T:i可比较
{
私有节点根;
公共树()
{
root=null;
}
公共二叉树(节点)
{
根=节点;
}
//顺序算法
公共无效预订单()
{
前序(根);
}
私有void预订单(节点树)
{                                                                
如果(树!=null)
{
Console.Write(tree.Data);
前序(树左);
前序(树右);
}
}
公众邮购无效()
{
后序(根);
}
专用void POSTORDER(节点树)
{                                                                 
如果(树!=null)
{
邮购(左树形);
邮购(树右);
Console.WriteLine(tree.Data);
}
}
公共无效序()
{
顺序(根);
}
私有void索引(节点树)
{                                                                 
如果(树!=null)
{
顺序(树,左);
Console.WriteLine(tree.Data);
顺序(tree.Right);
}
}

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

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

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

2) 您正试图调用无法访问的private
inoorder
例程。请注意小写和大写i之间的区别。您想调用public
inoorder()

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

BinaryTree<int> myBinaryTree = new BinaryTree<int>();
myBinaryTree.InOrder();
BinaryTree myBinaryTree=newbinarytree();
myBinaryTree.inoorder();
但是,此代码将不起作用,因为您有一个未填充的树(即使根节点为null)


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

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

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

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

2) 您正试图调用无法访问的private
inoorder
例程。请注意小写和大写i之间的区别。您想调用public
inoorder()

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

BinaryTree<int> myBinaryTree = new BinaryTree<int>();
myBinaryTree.InOrder();
BinaryTree myBinaryTree=newbinarytree();
myBinaryTree.inoorder();
但是,此代码将不起作用,因为您有一个未填充的树(即使根节点为null)


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

因为它是泛型的,所以必须传入在您看到的位置使用的类型,即u在类型重要的对象中使用sed。

因为它是泛型的,所以必须传入在类型重要的对象中使用的类型。

首先,不能从类型名调用实例方法。其次,为什么要尝试调用私有方法从类之外?这里到底发生了什么?从技术上讲,调用是一个公共实例方法。为了调用类方法(不是实例),您必须实例化一个变量。或者,方法/属性或您要使用的任何内容都应该是静态的。在这种情况下,如果您确实调用了它,并且它是静态的,则很可能会出现错误/异常,因为在public inoder()中方法你会调用一个私有实例方法…但是是哪个实例的?首先,你不能从类型名调用一个实例方法。其次,你为什么要从类外部调用一个私有方法?这里到底发生了什么?从技术上讲,调用的是一个公共实例方法。为了调用一个类方法(不是实例),您必须实例化一个变量。或者方法/属性或您想要使用的任何东西都应该是静态的。在这种情况下,如果您确实调用了它,并且它是静态的,则很可能会出现错误/异常,因为在public inoder()中方法,您将调用一个私有实例方法…但属于哪个实例?请看James answer,他提供的
BinaryTree<int> myBinaryTree = new BinaryTree<int>();
myBinaryTree.InOrder();