Свести бинарный поиск по порядку односвязных списков [C]

Я пытаюсь свести бинарное дерево поиска к односвязному списку.

Двоичное дерево поиска:

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

Сводный односвязный список:

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

Я могу'Кажется, по какой-то причине это понять.

У меня есть структура для узлов дерева:

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

У меня есть функция для создания и выделения памяти для узла дерева:

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

У меня есть структура для списка узлов:

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

У меня есть функция для создания узла списка:

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

И у меня есть рабочие функции для создания бинарного дерева поиска, для вставки значений и т. Д., Но теперь мне нужно создать функцию, чтобы сгладить дерево в список.

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

Я просто могуКажется, я не могу понять, как свести его к односвязному списку. Я видел много других тем и сайтов, обсуждающих преобразование бинарного дерева поиска в двоякий или циклически связанный список, но ни одного о копировании значений в односвязный список. Если кто-то может высказать предложения о том, как я могу сделать это, я был бы очень признателен. Это для домашнего задания, так что, если вы также можете дать небольшое объяснение, чтобы помочь мне учиться, это было бы здорово.

Ответы на вопрос(7)

Ваш ответ на вопрос