一棵树应该只有一个根节点

时间:2012-07-06 16:47:06

标签: c# treeview hierarchy root-node

我想显示一个树形结构。我是否真的需要为用户/树提供一个预定义的硬编码根节点,如“RootUnit”,他可以在哪里添加他的孩子或后代?

添加节点时这是否有意义或只会造成麻烦?

5 个答案:

答案 0 :(得分:5)

如果你有两个根,那么你有两棵树。

答案 1 :(得分:2)

一棵树应该只有一个根。但你不需要硬编码根。只需将第一个创建的树节点视为root。

答案 2 :(得分:2)

根据定义,树只有一个根,每个子节点只有一个父节点(除了没有父节点的根节点)。如果不满足这些限制,那么您的树不再是树,而是图形(定向与否)

答案 3 :(得分:2)

这取决于具体情况。从严格的数学定义,您不能有多个根节点到树。但是,有一些树的实现忽略了它并且无论如何都有多个顶级节点(例如你用这个问题标记的TreeView控件)。您只需要问自己,如果您的特定程序在多个顶级节点中更好或更差。鉴于我们对您的计划一无所知,这不是我们真正能为您做出的决定。

答案 4 :(得分:1)

不是为每个节点使用相同的构造函数,而是提供用于根节点的默认构造函数和用于其他所有节点的默认构造函数。它并不难看,而且很有效。

public Node()
{
  // Set properties if you'd like.
  // such as having no children yet or whatnot.
}

public Node(Node parent)
{
  // Similar to Node()
}

请参阅!很干净。