Я инициализировал корень в NULL при запуске, и то же самое будет с первой функцией вставки. Поскольку я отправил адрес корня, он должен быть изменен, но это не так, снова во втором операторе вставки NULL vakue для корня происходит внутри функции вставки.
Пожалуйста, дайте мне знать, где я пропустил это.
#include <stdio.h>
#include <stdlib.h>
typedef struct bst{
struct bst *left;
int data;
struct bst *right;
}bst_t;
void insert(struct bst**, int);
void print(struct bst*);
int main() {
struct bst *root;
root = NULL;
insert(&root, 45);
insert(&root, 75);
insert(&root, 5);
insert(&root, 76);
insert(&root, 25);
insert(&root, 56);
insert(&root, 89);
insert(&root, 99);
insert(&root, 98);
print(root);
printf("Print Any Char...\n");
getch();
return 0;
}
void insert(struct bst **root, int num)
{
struct bst *node = *root;
if(node == NULL)
{
node = (struct bst*)malloc(sizeof(struct bst));
node->left = NULL;
node->data = num;
node->right = NULL;
return;
}
else
{
if(num < node->data)
{
insert(&(node->left), num);
}
else
{
insert(&(node->right), num);
}
}
return;
}
void print(struct bst *root)
{
struct bst *temp = root;
if(temp != NULL)
{
printf("%d --> ", temp->data);
print(temp->left);
print(temp->right);
}
else
return;
}