修改 填充树的最佳方法是什么?我现在正在添加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);
}
}
答案 0 :(得分:3)
这里有几件事情。
特定错误是因为您引用了没有泛型参数的类BinaryTree
,或者您在类定义中看到的T
。
您的代码还有其他问题:
1)如果不实例化类,则无法访问非静态成员。 AKA类定义不知道您要操作哪些数据。
2)您正在尝试调用无法访问的私有inOrder
例程。注意大小写i之间的区别。您想致电公众InOrder()
您的结束代码应如下所示:
BinaryTree<int> myBinaryTree = new BinaryTree<int>();
myBinaryTree.InOrder();
但是,由于您有一个未填充的树(即使根节点为空),此代码也不起作用。
编辑:不工作我的意思是不会产生任何输出。查看BinaryTree的类定义,您需要添加填充树的方法,以便有效地测试打印树的方法。
答案 1 :(得分:0)
因为它是通用的,你必须传入你看到的类型,它是通过类型很重要的对象使用的类型。