设计一个算法把二叉数的叶子结点按从左到右的顺序连成一个单链表...
发布网友
发布时间:2024-10-09 16:59
我来回答
共3个回答
热心网友
时间:2024-10-31 08:36
建立头指针 h,和指向当前节点的指针 p = h;
按 先序 或 中序 遍历该2叉树.
当碰到叶子节点 c 时:
p->rchild = c;
p = c;
遍历结束,返回h
*****************************
struct Node{
DateType date;
struct Node *lchild,*rchild
}*h,*p;
main()
{
*h = (Node *)malloc(sizeof(Node));
*p = h;
Node *tree;
/*取得2叉树*/
...
/*遍历*/
PreOderTraverse(tree);
p = h->rchild;
free(h);
/*输出p*/
...
}
PreOrderTraverse(Node node)
{
if(node == null) return;
if(node->lchild == null && node->rchild == null)
{p->rchild = node;
p = node;
return;
}
PreOrderTraverse(node->lchild)
PreOrderTraverse(node->rchild)
}
热心网友
时间:2024-10-31 08:41
这问题听着像是线索二叉树,建议lz查查有关这个的相关材料~~
热心网友
时间:2024-10-31 08:41
你的要求还挺多的,不想做作业啊。
InsertList(List *list)
{
GList->next=list;
list->next=NULL;
}
NodeToList(Node *node)
{
if(node->ldchild==NULL&&node->rdchild==NULL)
InsertList(node);
if(node->ldchild!=NULL)
NodeToList(node->ldchild);
if(node->rdchilde!=NULL)
NodeToList(node->rdchild);
return;
}