logo

挿入

挿入関数は、二分探索ツリーの適切な位置に新しい要素を追加するために使用されます。挿入関数は、各値で二分探索木のプロパティに違反するノードを作成する必要があります。

  1. ツリーにメモリを割り当てます。
  2. データ部分に値を設定し、ツリーの左右のポインタをNULLに設定します。
  3. 挿入される項目がツリーの最初の要素である場合、このノードの左側と右側は NULL を指します。
  4. それ以外の場合は、項目がツリーのルート要素より小さいかどうかを確認し、これが真の場合は、ルートの左側でこの操作を再帰的に実行します。
  5. これが false の場合、ルートの右のサブツリーを使用してこの操作を再帰的に実行します。

挿入(ツリー、アイテム)

    ステップ1:ツリー = NULL の場合
    TREE にメモリを割り当てる
    ツリーを設定 -> データ = アイテム
    ツリーを設定 -> 左 = ツリー -> 右 = NULL
    それ以外
    アイテムデータの場合
    挿入(ツリー -> 左、アイテム)
    それ以外
    挿入(ツリー -> 右、アイテム)
    [IFの終わり]
    [IFの終わり]ステップ2:終わり

二分探索木への挿入

C関数

 #include #include void insert(int); struct node { int data; struct node *left; struct node *right; }; struct node *root; void main () { int choice,item; do { printf('
Enter the item which you want to insert?
'); scanf('%d',&item); insert(item); printf('
Press 0 to insert more ?
'); scanf('%d',&choice); }while(choice == 0); } void insert(int item) { struct node *ptr, *parentptr , *nodeptr; ptr = (struct node *) malloc(sizeof (struct node)); if(ptr == NULL) { printf('can't insert'); } else { ptr -> data = item; ptr -> left = NULL; ptr -> right = NULL; if(root == NULL) { root = ptr; root -> left = NULL; root -> right = NULL; } else { parentptr = NULL; nodeptr = root; while(nodeptr != NULL) { parentptr = nodeptr; if(item data) { nodeptr = nodeptr -> left; } else { nodeptr = nodeptr -> right; } } if(item data) { parentptr -> left = ptr; } else { parentptr -> right = ptr; } } printf('Node Inserted'); } } 

出力

 Enter the item which you want to insert? 12 Node Inserted Press 0 to insert more ? 0 Enter the item which you want to insert? 23 Node Inserted Press 0 to insert more ? 1