线索二叉树的构造和遍历

线索二叉树是一种特殊的二叉树,用于方便遍历。当结点无左子结点时,ltag置1,lchild指向遍历顺序的前驱结点;若无右子结点,rtag置1,rchild指向前继结点。本文介绍了线索二叉树的存储结构,数据插入方法,以及中序遍历线索化的递归算法,包括如何处理第一个访问结点和最后一个结点。此外,还讨论了如何在线索二叉树中查找第一个元素、最后一个元素以及结点的前驱和后继结点,并给出了中序遍历的实现方式。
摘要由CSDN通过智能技术生成

什么是线索二叉树?

若结点无左子结点则令ltag=1,同时这个lchild指针指向遍历顺序的前驱结点;若结点无右子结点,令rtag=1,同时此rchild指针指向遍历顺序的后继结点。

//
线索二叉树的存储结构

typedef struct ThreadNode{
   
	int data;
	struct ThreadNode *lchild,*rchild;
	int ltag,rtag;
}ThreadNode,*ThreadTree;

//
对二叉树进行数据插入
这里对ltag和rtag进行初始化为0,数据小于结点,就插到左子树上,大于结点插到右子树上

void insertThTree(ThreadTree &T,int val){
   
	ThreadNode *s;
	if(T!=NULL){
   
		if(val<T->data){
   
			insertThTree(T->lchild,val);
		}else if(val>T->data){
   
			insertThTree(T->rchild,val)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值