いくつかの質問に目を通しましたが、何が起こっているのかわかりません。二分木を前後の順序でリンクされたリストに変換しようとしています。私のコードは、ゼロで構成されたリンク リストを返しています。この場合、post-order のコードは本質的に pre と同じであるため、除外しました。これが私の関連コードです:
typedef struct list {
int data;
struct list *next;
} List;
List* createNode(int data)
{
// create node in memory
List* list = malloc(sizeof(list));
// init parameters
list->data = data;
list->next = NULL;
}
void printList(List *list)
{
//if(list->next == NULL) printf("y");
while(list != NULL) {
printf("%d", list->data);
list = list->next;
}
}
void preOrder(node *tree, List *list)
{
if(tree == NULL) return;
// visit root
list = createNode(tree->data);
// left
preOrder(tree->left, list->next);
// right
preOrder(tree->right, list->next);
}
int preL(node *a)
{
// create preList
List *preList = malloc(sizeof(List));
preOrder(a,preList);
printList(preList);
}