我想显示一个树结构。我真的需要给用户/树一个预定义的硬编码根节点,如"RootUnit",他可以在其中添加他的子节点或后代吗?
这是否有意义或仅在添加节点时造成麻烦?
如果你有两个根,那么你就有两棵树。
一棵树应该只有一个根。但是您不需要对根进行硬编码。只需将第一个创建的树节点视为根节点。
定义,树只有一个根,每个子节点只有一个父节点(除了没有父节点的根)。如果不满足这些限制,那么你的树就不再是一棵树,而是一个图(定向与否)
这取决于上下文。 从严格的数学定义来看,一个树不能有多个根节点。 但是,有一些树的实现忽略了这一点,并且无论如何都有多个顶级节点(例如您标记此问题的TreeView
控件)。 你只需要问问自己,你的特定程序在多个顶级节点上是更好还是更差。 鉴于我们对您的计划一无所知,这不是我们真正可以为您做出的决定。
与其为每个节点使用相同的构造函数,不如提供一个用于根节点的默认构造函数和一个用于其他所有内容的默认构造函数。 它并不丑陋,而且有效。
public Node()
{
// Set properties if you'd like.
// such as having no children yet or whatnot.
}
public Node(Node parent)
{
// Similar to Node()
}
看!不错,干净。