ツリーの概念と構造(ツリーを知らせるには記事で十分です)

ジングル、ジングル

データ構造を学んでいる古い鉄がここに来る

あなたもそんな悩みはありますか

学校の先生が教えるデータ構造は非常に表面的なものです

書記言語の本を買いすぎて理解できません。

特に木の章になると、人全体が盲目になります

同じ問題が発生した場合は、今すぐクリックしてください。

先の高エネルギーに注意を払い、ぼんやりしないでください

次に、今日の高エネルギーに入りましょう!


ツリーの概念

 

ツリーは非線形データ構造であり、n(n> = 0)の有限ノードで構成され、階層関係のあるセットを形成します。逆さまの木のように見えるため、木と呼ばれます。つまり、根が上に、葉が下になっています。

  • ルートノードと呼ばれる特別なノードがあります。ルートノードには先行ノードはありませんが、後続ノードを持つことができます。
  • ルートノードを除くすべてのノードには一意の先行ノードがあり、すべてのノードには0個以上の後続ノードを含めることができます
  • ツリーは再帰的に定義されます

木と非木?

ツリーの特徴:①サブツリーは交差しません

                  ②ルートノードを除いて、各ノードには親ノードが1つだけあります(ルートノードには親ノードがありません)。

                  ③NノードのツリーにはN-1個のエッジがあります

 

ツリーの各ノードの関係 

 

ノードの次数:ノードに含まれるサブツリーの数は、ノードの次数と呼ばれます。上記のように、Aは6です。

リーフノードまたはターミナルノード:次数が0のノードはリーフノードと呼ばれます。上の図に示すように、B、C、H、I...およびその他のノードはリーフノードです。

非終端ノードまたは分岐ノード:次数が0ではないノード。上の図に示すように、D、E、F、G...およびその他のノードは分岐ノードです。

親ノードまたは親ノード:ノードに子ノードが含まれている場合、そのノードはその子ノードの親ノードと呼ばれます。上記のように、AはBの親ノードです。

子ノードまたは子ノード:ノードに含まれるサブツリーのルートノードは、ノードの子ノードと呼ばれます。上記のように、BはAの子ノードです。

兄弟ノード:同じ親ノードを持つノードは兄弟ノードと呼ばれます;上記のように:BとCは兄弟ノードです 

ツリーの次数:ツリーでは、最大ノードの次数はツリーの次数と呼ばれます。上記のように、ツリーの次数は6です。

ノードのレベル:ルートの定義から始めて、ルートは最初のレイヤーであり、ルートの子ノードは2番目のレイヤーです。

ツリーの高さまたは深さ:ツリー内のノードの最大レベル;上記のように:ツリーの高さは4です 

ノードの祖先:ルートからノードへのブランチ上のすべてのノード;上記のように:Aはすべてのノードの祖先です

子孫:ノードをルートとするサブツリー内のノードは、ノードの子孫と呼ばれます。上に示したように:すべてのノードはAの子孫です

フォレスト:互いに交差しないm(m> 0)の木のセットは、フォレストと呼ばれます(データ構造での学習と検索は本質的にフォレストです)

 

 木の表現

ツリー構造は線形テーブルよりも複雑で、保存や表現が面倒です。実際には、親表現、子兄弟表現、子表現など、ツリーの表現はたくさんあります。

 ここで子供の兄弟表記と親表記を見てみましょう

 ①子供の兄弟の表現:

typedef int DataType;
struct Node
{
    struct Node* _firstChild1;    // 第一个孩子结点
    struct Node* _pNextBrother;   // 指向其下一个兄弟结点
    DataType _data;               // 结点中的数据域
};

 

 ②親の表記

 

実際のツリーの使用(ファイルシステムのディレクトリツリー構造を表す) 

 

QQ:2186529582

次のブログ投稿:二分木は私たちに参加することを忘れないでください!

 

 

 

おすすめ

転載: blog.csdn.net/m0_66488562/article/details/123632852