我想显示一个树结构。我真的需要给用户/树一个预定义的硬编码根节点,比如“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()
}
看!干净整洁。