Как я могу кодировать двоичное дерево со структурой.
Я хочу сортировать элементы в массиве по двоичному дереву. Я создал функцию insert (root, element_of_array). В функции insert он сравнивает значения узлов и решает перейти на левую или правую сторону, если узел равен нулю, он добавляет новый узел.
В чем разница между этими решениями ?
struct node{ int value; struct node *r,*l; }; void insert(struct node *root,struct node *new_n){ struct node *cr = root; //The first while(cr != NULL){ if(cr->value > new_n->value){ cr = cr->l; }else{ cr = cr->r; } } cr = new_n; /*The second if(new_n->value < cr->value){ if(cr->l == NULL) cr->l = new_n; else insert(cr->l,new_n); } if(new_n->value > cr->value){ if(cr->r == NULL) cr->r = new_n; else insert(cr->r,new_n); } */ } int main(){ int i; struct node array[10]; struct node *root=0; root = &array[0]; srand(time(NULL)); for(i=0;i<10;i++){ array[i].value = rand() % 100; printf("prvok %d ma hodnotu :%d\n",i,array[i].value); array[i].l = NULL; array[i].r = NULL; } printf("++++++++++++++++++++++++++++++++++++++++++++++++\n"); for(i=1;i<10;i++){ insert(root,&array[i]); } return 0; }
Что я уже пробовал:
Я попробовал измениться:
*КР = *new_n;
--------------------------------
cr = malloc(sizeof(struct node));
*КР = *new_n;
Graeme_Grant
Если это не домашнее задание, я бы рекомендовал вместо него QuickSort.