2009-08-27 176 views
1

我正在尋找一棵樹的實施... 你可以看到我previous question here。 但我不會想實現它自己,樹數據結構

例如功能需要:

  • 我需要FindElement(節點)
  • 我需要的getParent(節點) - 會做再次找到
  • GetSubTreeFrom(節點) - 發現元素並返回一個子樹..

我知道C5 - 但所有的樹木有紅黑(我不希望它被訂購) 我試過Powercollection沒有找到樹...

我不確定,但也許設置或哈希可以完成這項工作。

任何幫助,將不勝感激。

回答

0

那麼無序的樹對任何事物都沒什麼好處,一般來說。搜索,然後變成O(n)操作,擊敗使用樹開始的整個目的。

也許你需要的是一棵樹(樹的樹......)。目錄中的每個級別都可以是它自己的樹。子類別可以是父類別節點的子樹成員。

我還沒有想好這件事,但使用它可以使用現成的數據結構,而不是編寫自己的數據結構。

0

你可以實現你想要這樣的東西:

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");