ツリーストレージ構造-データ構造


序文

データの論理構造

  1. 線形構造

  2. 非線形構造

    • 木の構造
    • グラフィック構造

この章で紹介するツリー構造は、「1対多」の関係でデータ要素のコレクションを格納する非線形ストレージ構造です。


1.ツリーの定義

木の構造

  • ノード間の分岐
  • 階層関係がある

図に示すように:
ここに画像の説明を挿入
Tree:はn(n> = 0)ノードの有限集合です。

n = 0の場合、それは空のツリーと呼ばれます。

n> 0の場合、次の2つの条件を満たす。

  1. ルート(ルート)と呼ばれる特定のノードは1つだけです。
  2. 残りのノードは、m(m> = 0)の互いに素な有限集合T1、T2、T3、...、Tmに分割できます。各集合はそれ自体がツリーであり、ルートのサブツリー(SubTree)と呼ばれます。例:ノードB、E、F、K、およびLで構成されるツリーは、ツリー全体のサブツリーです。

データAの場合、データB、C、およびDに関連し、データBの場合、EおよびFに関連します。これが「1対多」の関係です。

次に、ツリーのノード

ノード:ツリー構造に格納されている各データ要素は「ノード」と呼ばれます。たとえば、図1(A)では、データ要素Aはノードです。

親ノード(親ノード)、子ノード兄弟ノード:図1(A)のノードA、B、C、Dの場合、AはノードB、C、Dの親ノード(「親ノード」とも呼ばれます)です。 )、およびB、C、およびDは、すべてノードAの子ノード(「子ノード」とも呼ばれます)です。B、C、およびDの場合、それらはすべて同じ親ノードを持っているため、互いに兄弟です。

ツリールートノード(「ルートノード」と呼ばれます):空でないすべてのツリーには、ルートと呼ばれるノードが1つだけあります。図1(A)では、ノードAはツリー全体のルートノードです。

ツリーのルートを判断するための基礎は次のとおりです。ノードに親ノードがない場合、このノードはツリー全体のルートノードになります。

リーフノード:ノードに子ノードがない場合、このノードはリーフノード(リーフノード)と呼ばれます。たとえば、図1(A)では、ノードK、L、F、G、M、I、およびJはすべてこのツリーのリーフノードです。

3つ、サブツリーと空のツリー

サブツリー:図1(A)に示すように、ツリー全体のルートノードはノードAであり、ノードB、E、F、K、Lで構成される部分を見ると、これもツリーであり、ノードBは、このツリーのルートノードです。したがって、ノードB、E、F、K、およびLで構成されるツリーは、ツリー全体のサブツリーと呼ばれます。同様に、ノードE、K、およびLもサブツリーであり、ルートノードはEです。

注:単一ノードもツリーですが、ルートノードはそれ自体です。図1(A)では、ノードK、L、Fなどはすべてツリーであり、それらはすべてツリー全体のサブツリーです。

サブツリーの概念を理解した後、ツリーは次のように定義することもできます。ツリーは、ルートノードといくつかのサブツリーで構成されます。

空のツリー:セット自体が空の場合、形成されたツリーは空のツリーと呼ばれます。空のツリーにはノードがありません。

補足:ツリー構造では、同じルートノードを持つ各サブツリーは互いにオーバーラップできません。たとえば、図1(A)では、ルートノードAに加えて、残りの要素がそれぞれ3つのサブツリーを構成しています。ルートノードはB、C、およびDです。これらの3つのサブツリーには同じノードがありません。存在する場合、それは木の構造を破壊し、木として数えることができません。

第四に、ノードの次数とレベル

ノードの場合、サブツリーの数(ノードにあるブランチの数)は、ノードの次数次数)と呼ばれますたとえば、図1(A)では、ルートノードAの下に3つのサブツリーがあるため、ノードAの次数は3です。

ツリーの次数は、ツリー内の各ノードの次数の最大値です。ツリー1(A)が示すように、各ノードの最大値は3であるため、ツリー値の全粒穀物は3です。

ノードレベル:ツリーのルートから開始して、ルートレイヤーが最初のレイヤー、ルートの子ノードが2番目のレイヤーというように続きます。図1(A)の場合、ノードAは第1層にあり、B、C、およびDは第2層にあり、E、F、G、H、I、およびJは第3層にあり、K、L、とMは3層目です。4階建てです。

ツリーの深さ(高さ)は、ツリー内のノードの最大レベルです。図1(A)のツリーの深さは4です。

2つのノードの親ノードが同じではないが、それらの親ノードが同じレベルにある場合、2つのノードは互いにいとこですたとえば、図1(A)では、ノードGとE、F、H、I、およびJの親ノードはすべて第2層にあるため、それらの間の関係はいとこです。

第四に、順序付けられた木と順序付けられていない木

ツリー内のノードのサブツリーを左から右に見ると、誰が左側に誰が右側にいるかという規制があります。このツリーは順序付きツリーと呼ばれ、それ以外の場合は順序なしツリーと呼ばれます。

順序付けられたツリーでは、ノードの左端のサブツリーは「最初の子」と呼ばれ、右端のサブツリーは「最後の子」と呼ばれます。

図1(A)を例にとると、それが順序付けられたツリー自体である場合、ルートノードとしてノードBを持つサブツリーはツリー全体の最初の子であり、ノードDはルートノードです。の子ツリーは最後です。木全体の子。

五、森

m(m> = 0)の互いに素な木の集合は、フォレストと呼ばれます。図1(A)では、ルートノードとしてB、C、およびDを持つ3つのサブツリーをフォレストと呼ぶことができます。

前述のように、ツリーはルートノードと複数のサブツリーで構成されていると理解でき、これらのサブツリー自体はフォレストであるため、ツリーはルートノードとフォレストで構成されていると理解することもできます。式で表されます:Tree =(root、F)

その中で、rootはツリーのルートノードを表し、Fはm(m> = 0)本のツリーで構成されるフォレストを表します。

6、ツリーの他の表現

図1(A)のツリー表現に加えて、他の表現方法があります。
ここに画像の説明を挿入
図2(A)は、ネストされたセットの形式で表されます。

図2(B)は凹型表記を使用しています。

最も一般的に使用される表現方法は、一般化されたテーブルを使用することです。図1(A)は、一般化された表で次のように表されます:
(A、(B(E(K、L)、F)、C(G)、D(H(M)、I、J)))


総括する

ツリータイプのストレージ構造は家系図に似ており、各ノードには父と息子、兄弟、いとこの関係がある場合もあります。このセクションでは、ツリーの基本的な用語に焦点を当てます。抽象C言語中国語のウェブサイトのほとんどエラーがあればお気軽に訂正してください。

おすすめ

転載: blog.csdn.net/qq_52208569/article/details/115333099