木の紹介

Treeは、個々の要素またはノード間の階層関係を表す離散構造です。親が2つ以下の子を持つツリーは、バイナリツリーと呼ばれます。

ツリーとそのプロパティ

Definition−ツリーは、接続された非循環無向グラフです。$ G $の頂点のすべてのペアの間には、一意のパスがあります。N個の頂点を持つツリーには、$(N-1)$個のエッジが含まれます。0度の頂点を木の根と呼びます。1度の頂点はツリーのリーフノードと呼ばれ、内部ノードの次数は少なくとも2です。

Example −以下はツリーの例です−

木の中心とバイセンター

木の中心は、離心率が最小の頂点です。ツリー$ G $内の頂点$ X $の離心率は、頂点$ X $とツリーの他の頂点との間の最大距離です。最大離心率は木の直径です。ツリーに中心が1つしかない場合は中央ツリーと呼ばれ、中心が複数ある場合はバイセントラルツリーと呼ばれます。すべてのツリーは中央または双方向のいずれかです。

木の中心と双中心を見つけるアルゴリズム

Step 1 −指定されたツリーから次数1のすべての頂点を削除し、それらの入射エッジも削除します。

Step 2−エッジで結合された単一の頂点または2つの頂点が残るまで、手順1を繰り返します。単一の頂点が残っている場合、それはツリーの中心であり、エッジで結合された2つの頂点が残っている場合、それはツリーの二重中心です。

Problem 1

次の木の中心/双中心を見つける-

Solution

最初に、次数1のすべての頂点を削除し、それらの入射エッジも削除して、次のツリーを取得します-

ここでも、次数1のすべての頂点を削除し、それらの入射エッジも削除して、次のツリーを取得します-

最後に、単一の頂点 'c'を取得し、アルゴリズムを停止します。頂点が1つしかないため、このツリーには1つの中心「c」があり、ツリーは中央ツリーです。

Problem 2

次の木の中心/双中心を見つける-

Solution

最初に、次数1のすべての頂点を削除し、それらの入射エッジも削除して、次のツリーを取得します-

ここでも、次数1のすべての頂点を削除し、それらの入射エッジも削除して、次のツリーを取得します-

最後に、2つの頂点「c」と「d」が残っているため、アルゴリズムを停止します。エッジで結合された2つの頂点が残っているため、このツリーには2つの中心の「cd」があり、ツリーは2つの中心になっています。

ラベル付きツリー

Definition−ラベル付きツリーは、頂点に1からnまでの一意の番号が割り当てられているツリーです。一般式を推測するために、手作業でnの値が小さいこのような木を数えることができます。n個の頂点のラベル付きツリーの数は$ n ^ {n-2} $です。グラフが同型であり、2つのツリーの対応する点が同じラベルを持っている場合、2つのラベル付きツリーは同型です。

ラベルのない木

Definition−ラベルのないツリーとは、頂点に番号が割り当てられていないツリーです。n個の頂点のラベル付きツリーの数は$ \ frac {(2n)!} {(n + 1)!n!} $(n番目のカタラン数)

根付いた木

ルートツリー$ G $は、ツリーのルートと呼ばれる特別なノードを持つ接続された非巡回グラフであり、すべてのエッジは直接または間接的にルートから発生します。順序付けされたルートツリーは、各内部頂点の子が順序付けられているルートツリーです。ルートツリーのすべての内部頂点にm個以下の子がある場合、それはm-aryツリーと呼ばれます。ルートツリーのすべての内部頂点に正確にm個の子がある場合、それは完全なm-aryツリーと呼ばれます。$ m = 2 $の場合、ルート化されたツリーはバイナリツリーと呼ばれます。

二分探索木

二分探索木は、次の特性を満たす二分木です。

  • 頂点$ Vの左側のサブツリーの$ X $、Value(X)\ le Value(V)$
  • 頂点$ Vの右側のサブツリーにある$ Y $、Value(Y)\ ge Value(V)$

したがって、内部ノード$ V $の左側のサブツリーのすべての頂点の値は$ V $以下であり、内部ノード$ V $の右側のサブツリーのすべての頂点の値は$ V $以下です。 $ V $以上です。ルートノードから最も深いノードへのリンクの数は、二分探索木の高さです。

BSTでキーを検索するアルゴリズム

BST_Search(x, k) 
if ( x = NIL or k = Value[x] ) 
   return x; 
if ( k < Value[x]) 
   return BST_Search (left[x], k); 
else  
   return BST_Search (right[x], k)

二分探索木の複雑さ

平均的なケース 最悪の場合
スペースの複雑さ オン) オン)
検索の複雑さ O(log n) オン)
挿入の複雑さ O(log n) オン)
削除の複雑さ O(log n) オン)