2009-08-27 181 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");