首页 > 试题广场 >

设二叉树 T,用二叉链表结构存储。编写函数,输出最长一枝(根

[问答题]

设二叉树 T,用二叉链表结构存储。编写函数,输出最长一枝(根到叶子)上的所有结点值。要求先给出算法思想,再写出相应代码。

算法思想:将头结点摘下,重新构造单链表,指针p保存剩下链表的第一个结点的地址,指针temp指向当前需要进行插入的结点,指针pre是新插入结点的前驱结点,依次将temp所指向的结点插入到L中,直到p==NULL结束。

typedef struct LNode{
	Elemtype data;
	struct LNode *next;
}LNode,*LinkList;
void Insert(LinkList &L)
{
	LNode *p=L->next;//用于遍历所有结点
	L->next=NULL;//重新构造链表
	LNode *pre=L,*temp=NULL;//pre指针指向奇数列最后一个
	int i=1;//用于确定奇偶数
	while(p!=NULL)
	{
		temp=p;
		p=p->next;
		temp->next=pre->next;
		pre->next=temp;
		if(i%2==1)//插入的是奇数结点
			pre=temp;//将pre指向奇数列最后一个结点
		i++;
	}
}

发表于 2019-10-21 21:13:52 回复(0)