《数据结构》的课程设计,题目是请设计一个算法,把二叉树的叶子结点按从左到右的顺序连成。

2025-01-07 05:29:42
推荐回答(2个)
回答1:

下面是函数
//定义二叉树链式结构
typedef struct BitNode
{
char data; //数据域
struct BitNode *lchild,*rchild;//左右指针域
}BitNode,*BiTree;

//叶子节点从左到右依次存入链表中
//bt-二叉树,head-表头,pre-前趋节点
void LeafLink(BiTree bt,BiTree &head,BiTree &pre)
{
if(bt!=NULL)
{
LeafLink(bt->lchild,head,pre);

if(bt->lchild==NULL&&bt->rchild==NULL)//叶子节点
{
BiTree s;

s=(BiTree)malloc(sizeof(BitNode));
if(s==NULL)
{
printf("建立单链表申请内存出错\n");
exit(-1);
}
memcpy(s,bt,sizeof(BitNode));//内存拷贝,不破坏原二叉树信息
if(pre==NULL)//第一个叶子节点
{
head=s;
pre=s;
}
else
{
pre->rchild=s;
pre=s;
}
}

LeafLink(bt->rchild,head,pre);

pre->rchild=NULL;//最后节点后续为空

}
}

回答2:

你还是去相关论坛发个帖子吧,应该很多人会弄,我不会,只是建议。