Aplanar la búsqueda binaria para ordenar la lista enlazada [C]

Estoy tratando de aplanar un árbol de búsqueda binario a una lista enlazada individualmente.

Árbol binario de búsqueda:

      6
    /   \
   4     8
  / \     \
 1  5     11
         / 
       10

Lista de enlaces simples aplanados:

1 -> 4 -> 5 -> 6 -> 8 -> 10 -> 11

Parece que no puedo resolver esto por alguna razón.

Tengo una estructura para los nodos del árbol:

typedef stuct node {
    int key;
    struct node *left;
    struct node *right;
} Node;

Tengo una función para crear y asignar memoria al nodo del árbol:

Node* newNode (int key) {
    Node *new = malloc (sizeof(Node));
    new->left = NULL;
    new->right = NULL;
    new->key = key;
    return new;
}

Tengo una estructura para los nodos de la lista:

typedef struct list {
    int key;
    struct list* next;
} List;

Tengo una función para crear el nodo de lista:

List* newListNode (int key) {
    List *new = malloc(sizeof(List));
    new->key = key;
    new->next = NULL;
    return new;
}

Y tengo funciones de trabajo para crear el árbol de búsqueda binario, para insertar valores, etc., pero ahora necesito crear una función para acoplar el árbol a una lista.

List* flattenToLL(Node* root) {
    ...
}

Parece que no puedo imaginar cómo aplanarlo a una lista enlazada individualmente. He visto muchos otros subprocesos y sitios que analizan la conversión de un árbol de búsqueda binario a una lista enlazada doble o circular, pero ninguno acerca de copiar los valores en una lista enlazada individualmente. Si alguien puede ofrecer sugerencias sobre cómo puedo lograr esto, realmente lo agradecería. Esto es para una tarea, así que si también puede proporcionar una pequeña explicación para ayudarme a aprender, sería genial.

Respuestas a la pregunta(7)

Su respuesta a la pregunta