【发布时间】:2012-08-08 18:25:05
【问题描述】:
编辑: 填充树的最佳方法是什么?我现在正在添加 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);
}
}
【问题讨论】:
-
首先不能从类型名中调用实例方法。其次,您为什么要尝试从类外调用私有方法?这里到底发生了什么?
-
从技术上讲,该调用是对公共实例方法的调用。为了调用类方法(不是实例),您必须实例化一个变量。或者方法/属性或您要使用的任何内容都应该是静态的。在这种情况下,如果您确实调用了它并且它是静态的,那么您很可能会收到错误/异常,因为在公共 InOrder() 方法中,您将调用私有实例方法......但是是什么实例?
标签: c# tree binary-tree binary-search-tree