[英]Creating a linked list from a binary tree (preorder tranversal)
所以我試圖使用預順序遍歷從二叉樹創建一個鏈表。 我在執行時遇到很多問題,我看到了一些“解決方案”,但我不喜歡它! 我正在嘗試一些簡單的事情。
這是我到目前為止獲得的代碼:
typedef struct nodo {
int value;
struct nodo *left, *right;
} *ABin;
typedef struct lligada {
int value;
struct lligada *next;
} *LInt;
void preorder (ABin a, LInt * l) {
LInt r=*l,tmp;
tmp=r;
if (!a) {
*l=NULL;
}
else {
r=malloc(sizeof(struct lligada));
r->value=a->value;
r=r->next;
*l=tmp;
preorder (a->left,l);
preorder (a->right,l);
}
}
我總是空着清單!
如果(!a){* l = NULL; }
這將永遠是函數中要做的最后一件事,* l中的null會一直傳遞。
其余的也有問題:
r = r-> next;
但是,您永遠不會將r->next
設置為任何東西。 您必須先這樣做。
此外,當您第一次調用preorder()
, *l
指向什么? 您可能會更好,而不是傳遞LInt *,而讓函數返回Lint *(在內部調用preorder()
之后加入列表)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.