我正在寻找一棵树的实施... 你可以看到我previous question here。 但我不会想实现它自己,树数据结构
例如功能需要:
- 我需要FindElement(节点)
- 我需要的getParent(节点) - 会做再次找到
- GetSubTreeFrom(节点) - 发现元素并返回一个子树..
我知道C5 - 但所有的树木有红黑(我不希望它被订购) 我试过Powercollection没有找到树...
我不确定,但也许设置或哈希可以完成这项工作。
任何帮助,将不胜感激。
我正在寻找一棵树的实施... 你可以看到我previous question here。 但我不会想实现它自己,树数据结构
例如功能需要:
我知道C5 - 但所有的树木有红黑(我不希望它被订购) 我试过Powercollection没有找到树...
我不确定,但也许设置或哈希可以完成这项工作。
任何帮助,将不胜感激。
那么无序的树对任何事物都没什么好处,一般来说。搜索,然后变成O(n)操作,击败使用树开始的整个目的。
也许你需要的是一棵树(树的树......)。目录中的每个级别都可以是它自己的树。子类别可以是父类别节点的子树成员。
我还没有想好这件事,但使用它可以使用现成的数据结构,而不是编写自己的数据结构。
你可以实现你想要这样的东西:
class Category
{
ArrayList Next;
string name;
public Category()
{
name = "";
Next = new ArrayList();
}
public Category(string name)
{
this.name = name;
Next = new ArrayList();
}
public void Add(string name)
{
Next.Add(new Category(name));
}
public Category Find(string name)
{
Category a;
foreach (Category c in Next)
{
if (c.name == name)
return c;
a = c.Find(name);
if (a != null) return a;
}
return null;
}
// other functions you need
}
而且使用它像这样:
Category c = new Category();
c.Add("books");
Category a;
a = c.Find("books");
a.Add("SF");
a.Add("drama");
if (c.Find("SF") != null)
Console.WriteLine("found SF");
if (c.Find("other") == null)
Console.WriteLine("did not find other");