【发布时间】:2016-09-27 05:43:52
【问题描述】:
我正在为教授给出的二叉搜索树上的一些代码做一个测试用例
public static void Main(string [] args)
{
//on my prof's code, public class BinSearchTree<T>
BinSearchTree<int> myTree = new BinSearchTree<int>();
myTree.Insert(10);
myTree.Insert(15);
myTree.Insert(5);
myTree.Insert(2);
myTree.Insert(1);
Console.WriteLine(myTree.ToString());
Console.ReadKey();
}
它编译,但它显示
BinSearchTree`1[System.Int32]
谁能告诉我为什么会这样显示?
我的教授的代码:
public class BinSearchTree<T> where T : IComparable<T>
{
private class OurTreeNode<T>
{
public T Data { get; set; }
public OurTreeNode<T> Left;
public OurTreeNode<T> Right;
public OurTreeNode(T d = default(T), OurTreeNode<T> leftnode = null, OurTreeNode<T> rightnode = null)
{
Data = d;
Left = leftnode;
Right = rightnode;
}
public override string ToString()
{
return Data.ToString();
}
}
//...other methods
//prof's Insert method
public void Insert(T newItem)
{
mRoot = Insert(newItem, mRoot);
}
private OurTreeNode<T> Insert(T newItem, OurTreeNode<T> pTmp)
{
if (pTmp == null)
return new OurTreeNode<T>(newItem, null, null);
else if (newItem.CompareTo(pTmp.Data) < 0)
pTmp.Left = Insert(newItem, pTmp.Left);
else if (newItem.CompareTo(pTmp.Data) > 0)
pTmp.Right = Insert(newItem, pTmp.Right);
else
throw new ApplicationException("...");
return pTmp;
}
}
我尝试在 Insert 方法之后添加一个 ToString() 方法,但是当我使用 foreach 时它给了我一个错误。有没有一种无需过多额外方法即可显示它的方法?
【问题讨论】:
-
未提供数据类。我必须做一个吗?
-
只需循环所有 TreeNode 并打印存储值的 Data 属性。
-
@Angela - 看,你现在得到了答案。但是,为了理解它们,请准备自己的代码来打印二叉搜索树的节点。
-
@Angela - 另外,您没有显示 BinSearchTree
的 ToString(),而是显示了 OurTreeNode 的 ToString()! -
您需要向我们展示您“尝试添加”的内容以及它给您带来的错误。
标签: c# binary-search-tree