오늘 우리는 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!