我已经查看了几个问题,但我似乎无法弄清楚发生了什么。我正在尝试将我的二叉树转换为前/后顺序的链表。我的代码返回一个由零组成的链表。我排除了 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);
}