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