C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

リンクリストを使用して二分探索木を実装するC++プログラム


これは、リンクリストを使用してバイナリ検索ツリーを実装するためのC++プログラムです。

関数と疑似コード

アルゴリズム

Beginツリーのノードを入力として受け取ります。データd、左ポインターl、および右rを入力として受け取る構造体nodを作成します。ツリーにノードを挿入する関数create()を作成します。ノードの数としてc=0を初期化します。 c <6までwhileループを実行します:ルートを入力します。ノードの値を入力します。ルートより大きい場合は右として入力し、そうでない場合は左として入力します。関数inorder()を作成して、ノードを次のように順番にトラバースします。左–ルート–右。関数preorder()を作成して、ノードをpreorderとして次のようにトラバースします:Root – Left –Right。関数postorder()を作成して、ノードをプレオーダーとして次のようにトラバースします。左–右–ルートmain()から、関数を呼び出し、結果を出力します。終了

サンプルコード

 #include  using namespace std; struct nod {nod * l、* r; int d;} * r =NULL、* p =NULL、* np =NULL、* q; void create(){int v、c =0; while(c <6){if(r ==NULL){r=新しいうなずき; cout<<"ルートノードの値を入力してください\n"; cin>> r-> d; r-> r =NULL; r-> l =NULL; } else {p =r; cout<<"ノードの値を入力してください\n"; cin>> v; while(true){if(v  d){if(p-> l ==NULL){p->l=新しいうなずき; p =p-> l; p-> d =v; p-> l =NULL; p-> r =NULL; cout<<"左に入力された値\n";壊す; } else if(p-> l!=NULL){p =p-> l; }} else if(v> p-> d){if(p-> r ==NULL){p-> r =new nod; p =p-> r; p-> d =v; p-> l =NULL; p-> r =NULL; cout<<"右に入力された値\n";壊す; } else if(p-> r!=NULL){p =p-> r; }}}} c ++; }} void inorder(nod * p){if(p!=NULL){inorder(p-> l); cout < d < r); }} void preorder(nod * p){if(p!=NULL){cout < d < l); preorder(p-> r); }} void postorder(nod * p){if(p!=NULL){postorder(p-> l); postorder(p-> r); cout < d < 

出力

ルートnode7の値を入力します。node6valueの値を入力します。node4の値を入力します。node3の値を入力します。node3の値を入力します。node3の値を入力します。node2の値を入力します。 
  1. C++での二分木から二分探索木への変換

    二分木 は、ツリーの各ノードが最大2つの子ノードを持つことができる特殊なタイプのツリーです。これらの子ノードは、右の子および左の子と呼ばれます。 単純な二分木は-です 二分探索木(BST) は、次のルールに従う特殊なタイプのツリーです- 左の子ノードの値は常に親よりも小さくなります注 右側の子ノードは、親ノードよりも大きな値を持っています。 すべてのノードが個別に二分探索木を形成します。 二分探索木(BST)の例 − バイナリ検索ツリーは、検索、最小値と最大値の検索などの操作の複雑さを軽減するために作成されます。 ここでは、二分木が与えられており、

  2. C ++プログラムでの二分探索?

    二分探索は、半区間探索、対数探索、または二分探索とも呼ばれ、ソートされた配列内のターゲット値の位置を見つける検索アルゴリズムです。二分探索は、ターゲット値を配列の中央の要素と比較します。それらが等しくない場合、ターゲットが存在できない半分が削除され、残りの半分で検索が続行され、再び中央の要素がターゲット値と比較され、ターゲット値が見つかるまでこれが繰り返されます。残りの半分が空の状態で検索が終了した場合、ターゲットは配列に含まれていません。アイデアは単純ですが、バイナリ検索を正しく実装するには、特に配列の値が範囲内の整数のすべてではない場合、終了条件と中間点の計算に関する微妙な点に注意する必要