我正在尋找一棵樹的實施... 你可以看到我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");