我在C#中新,我完成这本书“微软的Visual C#2013分步实施”由约翰·夏普写的。练习,关于“仿制药”,我发现这个代码:
public class Tree<TItem> where TItem : IComparable<TItem>
{
public TItem NodeData { get; set; }
public Tree<TItem> LeftTree { get; set; }
public Tree<TItem> RightTree { get; set; }
public Tree(TItem nodeValue)
{
this.NodeData = nodeValue;
this.LeftTree = null;
this.RightTree = null;
}
public void Insert(TItem newItem)
{
TItem currentNodeValue = this.NodeData;
if (currentNodeValue.CompareTo(newItem) > 0)
{
// Insert the new item into the left subtree
// code here....
}
else
{
// Insert the new item into the right subtree
// code here....
}
}
}
我不明白为什么他定义在不同模式下的性能。有人是这样:
public TItem NodeData { get; set; }
和其他人在此:
public Tree<TItem> LeftTree { get; set; }
public Tree<TItem> RightTree { get; set; }
有人可以解释我为什么?谢谢
这些特性被用于不同的事情。正如其名称提示:
NodeData
是用来方便存储在树中的信息。LeftTree
/ RightTree
在那里,以便于树的拓扑结构 - 每个当前对象(节点)基本上是在本身为根的树的根。所以,因为它是一个二叉树,它有两个直接的后裔 - 左,右节点。哪里哪里泛型前来游玩的部分是关于什么是那种在树中存储的数据。所以NodeData
是平凡的“类型” TItem
。左,右节点类型Tree<TItem>
这样保证在树它是存储数据的TItem
类型的任何深度。
为了使它更简单的让假设你想创建一个整数的二叉树。然后,你就通过模型:
public class Tree
{
public int Data { get; set; }
public Tree Left {get; set; }
public Tree Right {get; set; }
}
我想,这样你才能真正看到的是什么Data
和Left
之间的根本区别,Right
性能。
他定义了一棵树。所述NODEDATA属性是当前节点值。然后,如果该值大于当前节点时,新的值被放在左边,否则在右边。如果LeftValue和RightValue的类型是树,这是有父子结构。该类允许创建像二叉树的数据结构。