Я написал простой код для создания и вставки элементов в двоичное дерево поиска, когда я пишу код следующим образом, цепочка, похоже, не происходит, может кто-нибудь помочь мне понять, что именно происходит в функции вставки? Я знаю код для вставки элементов в двоичное дерево поиска, просто любопытно узнать, почему этот не работает.Создание BINARY SEARCH TREE
#include <stdio.h>
#include<stdlib.h>
struct node
{struct node *left;
struct node* right;
int element;
};
void insert(struct node *node,int x)
{
if(node==NULL)
{node=(struct node *)malloc(sizeof(struct node));
node->element=x;
node->left=NULL;
node->right=NULL;}
else
{if(x<node->element)
{insert(node->left,x);}
else
{insert(node->right,x);}
}
}
void inorder(struct node *base)
{
if(base!=NULL)
{inorder(base->left);
printf("%d ",base->element);
inorder(base->right);
}
}
int main(int argc, char *argv[])
{struct node *base;
base=(struct node *)malloc(sizeof(struct node));
base->element=1;
base->left=NULL;
base->right=NULL;
insert(base,25);
insert(base,30);
inorder(base);
return 0;
}
если функция вставки написана таким образом, он работает, но до сих пор не работает для создания первого узла бинарного дерева поиска, беспорядочный/
void insert2(struct node *node,int x)
{
if(node==NULL)
{node=(struct node *)malloc(sizeof(struct node));
node->element=x;
node->left=NULL;
node->right=NULL;}
else
{if(x<node->element)
{if(node->left==NULL)
{node->left=(struct node *)malloc(sizeof(struct node));
node->left->element=x;
node->left->left=NULL;
node->left->right=NULL;}
else
{insert2(node->left,x);}
}
else
{
if(node->right==NULL)
{node->right=(struct node *)malloc(sizeof(struct node));
node->right->element=x;
node->right->left=NULL;
node->right->right=NULL;}
else
{insert2(node->right,x);}
}
}
}
В 'вставить()', вы только изменение локального 'node' переменной при создании нового узла. – Kishore
[Пожалуйста, не набрасывайте возвращаемое значение 'malloc'] (http://c-faq.com/malloc/mallocnocast.html) ... – Sebivor
Я полностью понимаю, что вам трудно отлаживать код , Начните с ввода кода в удобочитаемую форму (отступы, размещение фигурных скобок и т. Д.). Затем либо используйте отладчик, либо добавьте больше printf для понимания потока программы. – stefan