簡體   English   中英

從二叉樹創建鏈接列表(預遍歷)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM