木と二分木はどちらも木の言葉を持っており、構造的にはどちらも木のような構造ですが、違いは何ですか?2つの特徴について話しましょう。
最初は木です
まず、ツリーの基本的な概念とその用語のいくつかを見てください。
ルート:ルートノード。説明:ツリーの最上位ノード。
子:子ノード。説明:ルートノードを離れるときに別のノードに直接接続されているノード。
リーフ:リーフノード。説明:子ノードのないノード
エッジ:エッジ。説明:1つのノードと別のノード間の接続。
パス:パス。説明:ノードと子ノードを接続する一連のノードとエッジ。
高さ:ノードの高さ。説明:ノードの高さは、ノードとリーフノードの間の最長パス上のエッジの数を指します。
レベル:レベル。説明:ノードのレベルは、1 +(ノードとルート間の接続数)によって定義されます。
深さ:深さ。説明:ノードの深さは、ツリーのルートからノードまでのエッジの数です。
度:度。説明:ノードのサブツリーの数。
次の図は、ツリーのより重要な概念のいくつかを説明しています。
エッジ、ルート、リーフ
道
高さ
リーフノードの高さは0であり、ツリーにノードが1つしかない場合、このノードの高さも0であることに注意してください。
深さ
ルートノードの深さ(深さ)は0であることに注意してください。
高さと深さの比較から、それらの方向は正反対です。
高さと深さを覚える必要はありません私たちは実際の生活の中で木であるツリー逆さまに、見ることができるノードの高さは上向きルートからの方向でなければならない見つけるには、。。
それは見つけることがある場合ノードの深さと方向下向きである必要があります。
レベル
ノードのレベルは、ルートノードの1、Level = Depth + 1、およびLevel = 1から始まります。
レベルが0から始まる本もたくさんあります。この場合、レベルは深さに等しく、ルートノードのレベル= 0です。
二分木
二分木の基本概念
前に紹介した線形テーブルと同様に、無制限の線形テーブルの適用範囲は限られている場合がありますが、線形テーブルにいくつかの制限を設けることで、スタック、キュー、優先度付きキューなどの非常に便利なデータ構造を導き出すことができます。
同じことがツリーにも当てはまります。制限のないツリーは柔軟性が高く、複雑すぎて制御できません。ノードが2つの子ノードしか許可しないなど、通常のツリーに人為的な制限が追加された場合、これは次に紹介するバイナリツリーです。
二分木は、最大で2つのブランチがノードにあるツリーであり、左側のブランチは左側のサブツリーと呼ばれ、右側のブランチは右側のサブツリーと呼ばれます。
つまり、二分木のノードの最大次数は2ですが、通常のツリーの場合、ノードの次数は無制限です。
完全な二分木は、多くの教科書では完全な二分木とも呼ばれます。完全な二分木は2つの特性を満たします。
-
すべてのノードには2つの子ノードが含まれます
-
すべてのリーフノードの高さまたはレベルが等しい
たとえば、以下は完全な二分木です。
最後のレベル(両方に2つの子ノードがある)を除いて完全な二分木がいっぱいであり、最後のレベルのノードは左から右に配置されます。
素人の言葉で言えば、完全な二分木は、ノードが左から右に層状に配置されているということです。最後のレイヤーがいっぱいの場合は完全な二分木であり、いっぱいでない場合は完全な二分木です。
したがって、完全な二分木は完全な二分木でなければならず、完全な二分木は必ずしも完全な二分木ではありません。
完全な二分木は、配列で効率的に表すことができます。
たとえば、以下は完全な二分木です。
二分木を完成させるのは簡単です。つまり、各ノードには2つの子ノードがあります。つまり、完全な二分木よりも条件が1つ少なくなります。
たとえば、以下は完全な二分木です。
完全な二分木と完全な二分木の違い:
完全な二分木は完全な二分木から派生します。深さがKでノード数がnのdao二分木では、各ノードが深さKの完全な二分木で1からnまでの番号が付けられたノードに対応する場合に限り、完全な二分木と呼ばれます。
完全な二分木では、子ノードのない最後の層を除いて、各層のすべてのノードに2つの子ノードがあります。完全な二分木は非常に効率的なデータ構造であり、完全な二分木は完全な二分木から派生します。深さがKでノードがnの二分木の場合、各ノードが深さがKの完全な二分木の1からnまでの番号が付けられたノードに対応する場合に限り、完全な二分木と呼ばれます。
1.完全な二分木
定義:二分木。各層のノード数が最大に達すると、二分木は完全な二分木になります。言い換えると、二分木のレベル数がKで、ノードの総数が(2 ^ k)-1の場合、それは完全な二分木です。
2.完全な二分木
定義:二分木の深さがhの場合、他の層のノード数(1〜h-1)は、h番目の層を除いて最大数に達し、h番目の層のすべてのノードが継続的に集中します。左端、これは完全な二分木です。
完全な二分木とは、各ノードに2つの子ノードがあり、各レイヤーがいっぱいであることを意味します。一方、完全な二分木では、各ノードに2つの子ノードがある限り、各レイヤーを低速にする必要はありません。完全な二分木とは、最下層を除いて、他の層にはノードの下に2つの子ノードがあり、最下層の子ノードは左側に集中していることを意味します。
ツリーとバイナリツリーの違い:
1.性質が異なる
ツリー:ツリーはbaiデータ構造です。
二分木:二分木は、ノードごとに最大2つのzhiサブツリーを持つツリー構造daoです。
2.異なるノード
ツリー:ツリーの各ノードには0個以上の子ノードがあります。親ノードのないノードはルートノードと呼ばれます。非ルートノードにはそれぞれ1つの親ノードしかありません。
二分木:各ノードには最大2つのサブツリーがあります。
3つの異なるタイプ
樹木:樹木の種類には、無秩序な樹木、秩序ある樹木、二分木、ハフマン樹木が含まれます。
二分木:二分木の種類には、完全な二分木、完全な二分木、平衡二分木が含まれます。