Вставка порядка уровней в двоичное дерево

Мы должны вставлять элементы в двоичное дерево по уровням, то есть для массива:

a = {1,2,3,4,5,6}

1st level = [1]
2nd level = [2, 3]
3rd level = [4, 5, 6]

Я разработал код, но он каждый раз приводит к пустому дереву.

struct node
{
int data;
struct node* left;
struct node* right;
};

node* create(int x)
{
node* tmp;
tmp=(struct node *)malloc(sizeof(struct node));
tmp->data=x;
tmp->left=NULL;
tmp->right=NULL;
return tmp;
}

struct node* tree;

void insert(struct node* tree, int* a, int start, int n)
{
int left =2*start+1;
int right=2*start+2;
if(left>n || right>n)
return;
if(tree==NULL)
{
tree=create(a[start]);
}
if(tree->left==NULL && tree->right==NULL)
{
if(left<n)
tree->left=create(a[left]);
if(right<n)
tree->right=create(a[right]);
}
insert(tree->left,a,left,n);
insert(tree->right,a,right,n);
}

0

Решение

Вы проходите tree по стоимости; кто бы ни звонил insert все еще имеет NULL указатель после insert возвращается. Увидеть В чем разница между передачей по ссылке и передачей по значению? для некоторого фона.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]