今天我們將學習 BST 以及如何將單一元素(或我們可以說單一節點)插入 BST**。對於已經了解 BST 和雙鍊錶的人來說,這很容易,在閱讀本文之前,這些主題很重要。所以我提供了這些主題的鏈接,您可以參考它。 -
1.對於雙鍊錶
2.對於二元樹
所以在了解如何將單一節點插入 BST 之前。你一定要知道BST是什麼,BST是一個
** 二元搜尋樹**
它具有一些屬性,例如 :-
看起來像這樣
為了將元素插入 BST,我們需要一個指向根節點的指針,因為在某些部分我們必須將金鑰與根資料進行比較,以便我們知道金鑰將插入到左側還是右側。
首先我們建立一個節點並將其初始化為 BST。
這是您可以參考的程式碼,程式碼是用 C 語言實作的。
#include<stdio.h> #include<stdlib.h> struct node{ struct node* left; int data; struct node* right; }; struct node* createNode(int key){ struct node * newNode = NULL; newNode = malloc(sizeof(struct node)); newNode->left = NULL; newNode->data = key; newNode->right = NULL; return newNode; } void insertNewNode(struct node* root , int key){ struct node * prev = NULL; while(root!=NULL){ prev = root; if(key==root){ printf("element cannot insert it is present inside the bst already"); return ; } else if(key>root->data) { root = root->right; } else{ root = root->left; } } struct node * newNode = createNode(key); if(key>prev->data){ prev->right = newNode; } else{ prev->left = newNode; } } void inOrder(struct node* root){ if(root == NULL){ return root; } inOrder(root->left); printf("%d",root->data1`1); inOrder(root->right); } int main(){ struct node* head1 = createBst(20); struct node* head2 = createBst(10); struct node* head3 = createBst(30); head1->left=head2; head1->right=head3; insertNewNode(head1,40); printf("%d\n",head1->right->right->data); inOrder(head1); return 0; }
以上是如何將元素插入 BST (DSA) ?的詳細內容。更多資訊請關注PHP中文網其他相關文章!