ジングル、ジングル
データ構造を学んでいる古い鉄がここに来る
あなたもそんな悩みはありますか
学校の先生が教えるデータ構造は非常に表面的なものです
書記言語の本を買いすぎて理解できません。
特に木の章になると、人全体が盲目になります
同じ問題が発生した場合は、今すぐクリックしてください。
先の高エネルギーに注意を払い、ぼんやりしないでください
次に、今日の高エネルギーに入りましょう!!!
ツリーの概念
ツリーは非線形データ構造であり、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; // 结点中的数据域
};
②親の表記
実際のツリーの使用(ファイルシステムのディレクトリツリー構造を表す)
次のブログ投稿:二分木は私たちに参加することを忘れないでください!!!