Я создаю простое двоичное дерево поиска. Когда я вызываю метод add с помощью указателя на голову, изменения, внесенные в этот метод, не отражаются на этом главном указателе.создание двоичного дерева поиска, не обновляющего указатель
struct node *add(struct node *root,int data)
{
if (root==NULL)
{
root=(struct node *) malloc(sizeof(struct node));
root->data=data;
root->left=NULL;
root->right=NULL;
return root;
}
else
{
if (data<=root->data)
{
root->left=add(root->left,data);
}
else
{
root->right=add(root->right,data);
}
return root;
}
}
Я вызываю функцию как
struct node *head=NULL;
add(head,1);
add(head,3);
add(head,15);
В моем понимании, при вызове метода Add, корень = голова, поэтому голова указывает на то же место памяти, где корень указывает и должно быть обновляется с изменением значения root соответственно.
UPDATE
head=add(head,1);
Подсказка: ваша функция тщательно возвращает что-то. Ваш код вызова полностью игнорирует это. – Mat
Получил это :) Я обновил его. – Sanjana