树 --- 树的线索化

本文介绍了树线索化的概念,通过利用空链域存储指针,以增强对树结构的遍历能力。特别地,文章详细讲解了中序线索化的步骤,并提供了中序遍历线索树的代码实现。
摘要由CSDN通过智能技术生成
  1. 树为什么要线索化?
  2. 树如何线索化?
  3. 遍历线索树

1、树为什么要线索化?

      n个结点的二叉链表共有2n个链域,非空链域为n-1个,但其中的空链域却有n+1个。因此,提出了一种方法,利用原来的空链域存放指针,指向树中其他结点。这种指针称为线索。

2、树如何线索化(中序)?

以中序线索化为例

  • 如果ptr->lchild为空,则存放指向中序遍历序列中该结点的前驱结点。这个结点称为ptr的中序前驱;
  • 如果ptr->rchild为空,则存放指向中序遍历序列中该结点的后继结点。这个结点称为ptr的中序后继;

代码如下:

void MakeThread(BithrNode* tree, BithrNode* ptr)
{
	if (tree != NULL)
	{
		MakeThread(tree->lTree, ptr);
		if (tree->lTree == NULL)
		{
			tree->lTree = ptr;
			tree->Ltag = THREAD;
		}
		if (ptr != NULL && ptr->rTree == NULL)
		{
			ptr->rTree = tree;
			ptr->Rtag = THREAD;
		}
		ptr = tree;
		MakeThread(tree->rTree, ptr);
	}
}
void MakeThreadTree(Bith
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值