二叉树转换成双向链表

题目:

将一个二叉树转换为一个双向链表。要求不能创建新的节点,只能调整节点的指针。


思路:

code:

node*  Convert(node* pRoot)
{
	node* pLastNode = NULL;
	ConvertNode(pRoot , pLastNode);

	node* pHead = pLastNode;
	while (pHead  && pHead->pLeft ) //从当前位置找到头结点
	{
		pHead = pHead->pLeft;
	}
	return pHead;
}

void ConvertNode(node* pNode ,node*&  pLastNode)
{
	if (pNode == NULL)
		return;
	node* pCur = pNode;
	//树的最左节点作为链表的头
	if (pCur->pLeft)
		ConvertNode(pCur->pLeft, pLastNode);
	pCur->pLeft = pLastNode;  //前指针

	if (pLastNode)
		pLastNode->pRight = pCur;
	pLastNode = pCur;    //后指针

	if (pCur->pRight)
		ConvertNode(pCur->pRight, pLastNode);
}









评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值