struct cnode
{
int info;
struct cnode *next;
struct cnode *previous;
};
typedef struct cnode cnode;
предварительно сделанные двусвязного LIST: 1<->2<->3<->4<->5<->6<->7
Как конвертировать двусвязного список бинарного дерева
Так что я пытаюсь сделать рекурсивную функцию, которая захватывает середину двусвязного списка (корень = 4) и преобразовать его в оставшееся в двоичное дерево. Я все еще новичок в рекурсии, поэтому объяснение вместе с кодом было бы НАСТОЯТЕЛЬНО оценено!
EX. 4
/\
2 6
/\/\
1 3 5 7
Это код, который я до сих пор (что не сильно из-за трудностей с рекурсией)
void *convert(cnode *head){
if(head == NULL)
return;
int count = 0;
cnode *tempHead = head;
while(tempHead != NULL){
count++;
tempHead = tempHead->next;
}
int move = (count/2) + (count%2);
int i;
for(i=1; i<move; i++){
head = head->next;
}
}
Довольно много просто устанавливает указатель головы к середине информации (4)