0

一連のリンクされたリストに基づいて、C でデータ構造を実装しました。これは、ツリーに似ているように見えますが、理論的にはサイクルの存在が許容されるため、そのように参照するのに十分ではありません。ノードの基本的な概要は次のとおりです。

  • 親ノードまたは兄弟を持たない単一の識別可能なルートがあります。
  • 各ノードには、その「父」、最も近い「兄弟」、および最初の「子供」へのポインターが含まれています。
  • 子と兄弟のない「外部」ノードがあります。

このようなデータ構造に名前を付けるにはどうすればよいですか? ポインターが明確にラベル付けされ、異なる方法で使用されたとしても、父 -> 子供 -> 兄弟 -> 父のようなサイクルが非常によく存在する可能性があるため、ツリーにはなり得ません。私の質問は次のとおりです。「父」、「子供」、「兄弟」などの用語は、グラフのコンテキストで使用できますか、それともツリー用にのみ予約されていますか? かなりの調査の後、私はまだこの問題を明確にすることができません.

前もって感謝します!

4

1 に答える 1

0

基盤はツリー データ構造であるため、これをツリーと呼ぶこともできます。私の主張には優先順位があります。「Patricia Tries」は、葉のノードがツリーを指している (サイクルを作成している) 場合でも、ツリーと呼ばれます。他の例もあると思います。

あなたが持っている追加のリンクは、基本的に便宜上のものであり、(明示的に保存されるのではなく) 暗黙的に決定される可能性があるようです。それらを明示的に保存することにより、ツリー操作 (挿入、削除など) に追加の不変条件を課しますが、ツリーである基礎となる組織には影響しません。

これらの追加リンクに名前を付けて個別に扱っているという理由だけで、それらはツリー上の「オーバーレイ」と考えることができます。

結局のところ、それがあなたにとってうまくいくかどうかは、あなたがそれを何と呼ぶか​​、またはどのカテゴリーに分類されるかは問題ではありません. Sedgewick の「Algorithms in C」のような本を読むと、世の中にはたくさんのデータ構造があり、独自のデータ構造を発明することは何も悪いことではないことがわかります。

もう 1 点: ツリーはグラフの特殊なケースであるため、ツリーをグラフと呼ぶ (またはグラフ アルゴリズムを使用する) ことに問題はありません。

于 2013-07-30T17:35:59.247 に答える