Я изучал бинарное дерево поиска, и я пришел через этот код, который я не могу понятьНевозможно понять логику вставки в бинарное дерево поиска
// голова является корневым узлом & Num является ключевым элементом
void generate(struct node **head, int num)
{
struct node *temp = *head, *prev = *head;
if (*head == NULL)
{
*head = (struct node *)malloc(sizeof(struct node));
(*head)->a = num;
(*head)->left = (*head)->right = NULL;
}
else
{
while (temp != NULL)
{
if (num > temp->a)
{
prev = temp;
temp = temp->right;
}
else
{
prev = temp;
temp = temp->left;
}
}
temp = (struct node *)malloc(sizeof(struct node));
temp->a = num;
// Я не в состоянии понять следующие строки
if (num >= prev->a)
{
prev->right = temp;
}
else
{
prev->left = temp;
}
}
}