Функцията Insert се използва за добавяне на нов елемент в дърво за двоично търсене на подходящо място. Функцията за вмъкване трябва да бъде проектирана по такъв начин, че възелът да нарушава свойството на дървото за двоично търсене при всяка стойност.
- Разпределете паметта за дърво.
- Задайте частта с данни на стойността и задайте левия и десния показалец на дървото, посочете NULL.
- Ако елементът, който ще бъде вмъкнат, ще бъде първият елемент на дървото, тогава отляво и отдясно на този възел ще сочат към NULL.
- В противен случай проверете дали елементът е по-малък от коренния елемент на дървото, ако това е вярно, тогава рекурсивно изпълнете тази операция с лявата част на корена.
- Ако това е невярно, изпълнете тази операция рекурсивно с дясното поддърво на корена.
Вмъкване (ДЪРВО, ЕЛЕМЕНТ)
Разпределете памет за ДЪРВО
ЗАДАВАНЕ НА ДЪРВО -> ДАННИ = ЕЛЕМЕНТ
SET TREE -> LEFT = TREE -> RIGHT = NULL
ДРУГО
АКО ДАННИ ЗА АРТИКУЛА
Вмъкване (ДЪРВО -> НАЛЯВО, ЕЛЕМЕНТ)
ДРУГО
Вмъкване (ДЪРВО -> ДЯСНО, ЕЛЕМЕНТ)
[КРАЙ НА АКО]
[КРАЙ НА АКО]
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