利用结点的右孩子指针将一个二叉树的叶子节点从左向右链接成一个单链表(head指向第一个,tail指向最后一个)
//自写
typedef struct {
ElemType data;
struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
typedef struct{
ElemType data;
struct LNode *next;
}LNode,*LinkList;
L=(LinkList)malloc(sizeod(*LNode));
LNode *head,*tail=NULL,*p;
int step=0;
LinkList Conct_BT(BiTree T){
if(T->lchild==NULL&&T->rchild==NULL){
if(step==0){
head=T; p=head; L->next=head; head->next; step++;
}else{
tail=T; p->next=tail; p=p->next;
}
}
Conct_BT(T->lchild);
Conct_BT(T->rchild);
}
//答案
void link(BiTree *T,LNode *head,LNode *tail){
if(T!=NULL){
if(!p->lchild&&p->rchild){
if(head==NULL){
head=p; tail=p;
}else{
tail->next=p;
tail=p;
}
}
link(T->lchild,head,tail);
link(T->rchild,head,tial);
}