Здравствуйте! Пишу программу, которая строит дерево делителей числа, она продолжается до тех пор пока каждый лист не будет простым числом
Например, для числа 24 работа программы должна выглядеть так 24 | 2 | 3 | 4-2 | 6-2-3 И т.д., где после | идет левый ребенок, а после - правый. Попытался построить дерево с помошью рекурсии, но оно неправильно работает
{
Node *tmp = NULL;
tmp = *root;
int countDiv=findCountDivisors(num) ;
if (countDiv == 0)
return tmp;
int arrDivisors[countDiv];
for (int j = 0;j < countDiv; j++)
arrDivisors[j] = 0;
findDivisors(arrDivisors, num) ;
for (int i = 0; i < countDiv;i++)
{
insert(&tmp, arrDivisors[i], bitBinary) ;
if (findCountDivisors(arrDivisors[i]) == 0)
continue;
bitBinary = 1 - bitBinary;
if (bitBinary == 0)
return createTree(&tmp -> left, 0, tmp -> key);
return createTree(&tmp -> right, 1, tmp -> key);
}
}```
Если бит четности 0, то узел прикрепляется слева, иначе - справа. Моя программа на выходе выдает дерево до того места, когда нужно прикрепить правый узел
24
|
2
|
3
|
4
Помогите, пожалуйста, разобраться в чем проблема