我在this SO question找到了一棵树的实现。不幸的是我不知道如何使用它。我也做了更改它,因为链表没有添加方法:如何在C#中使用树型数据结构
delegate void TreeVisitor<T>(T nodeData);
class NTree<T>
{
T data;
List<NTree<T>> children;
public NTree(T data)
{
this.data = data;
children = new List<NTree<T>>();
}
public void AddChild(T data)
{
children.Add(new NTree<T>(data));
}
public NTree<T> GetChild(int i)
{
return children[i];
}
public void Traverse(NTree<T> node, TreeVisitor<T> visitor)
{
visitor(node.data);
foreach (NTree<T> kid in node.children)
Traverse(kid, visitor);
}
}
我有类命名的TTable,我想保存它的孩子和他们在这棵树的孙子(...)。我的需要是找到眼前的孩子,而不是遍历整棵树。我也可能需要找一些标准的孩子。比方说,tTable只有名字,我想找到名称符合某些标准的孩子。 tTables构造函数根据int-value给出了一个值(以某种方式)。
如何使用遍历(写代理)如果我有这样的代码;
int i = 0;
Dictionary<string, NTree<tTable>> tableTreeByRootTableName =
new Dictionary<string, NTree<tTable>>();
tTable aTable = new tTable(i++);
tableTreeByRootTableName[aTable.Name] = new NTree(aTable);
tableTreeByRootTableName[aTable.Name].AddChild(new tTable(i++));
tableTreeByRootTableName[aTable.Name].AddChild(new tTable(i++));
tableTreeByRootTableName[aTable.Name].GetChild(1).AddChild(new tTable(i++));
这个NTree类看起来不像一个链表。你确定这就是你需要的吗? – 2010-03-29 14:27:18
我可以向你保证'LinkedList'有一个Add方法。 –
2010-03-29 14:36:44
'LinkedList'的等价方法是'AddLast' –
2010-03-29 14:47:42