1

ツリーの実装を探しています...以前の質問はこちらでご覧いただけます。しかし、私はそれを自分で実装するのは好きではありません。

必要な機能の例:

  • FindElement(ノード) が必要です
  • GetParent(node) が必要です - 再度検索を行います
  • GetSubTreeFrom(node) - 要素を見つけてサブツリーを返します..

私はC5を知っています - しかし、そこにあるすべての木は赤黒です (そして私はそれを注文したくありません) 私は試しました Powercollection は木を見つけられませんでした...

よくわかりませんが、おそらく Set または Hash が仕事をすることができます。

任意の助けをいただければ幸いです。

4

2 に答える 2

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");
于 2009-08-27T07:50:06.617 に答える
0

一般的に、順不同のツリーは何の役にも立ちません。検索は O(n) 操作になり、そもそもツリーを使用する目的全体が無効になります。

たぶん、あなたが必要としているのは、ツリー・オブ・ツリー (ツリー・オブ・ツリーズ....) です。ディレクトリの各レベルは、独自のツリーにすることができます。サブカテゴリは、親カテゴリ ノードのサブツリー メンバーになることができます。

私はこれをよく考えていませんでしたが、これを使用すると、独自のデータ構造を作成する代わりに、既製のデータ構造を使用できます。

于 2009-08-27T07:18:30.457 に答える