用C语言实现线索二叉树

 

 

前言

为什么会有线索二叉树?当以二叉链表形式来保存二叉树时,只能找到节点的左右子树信息,而不能直接得到节点的前驱和后继信息(只有通过遍历,在动态过程中才能查到前驱和后继的信息)

因此就有了线索二叉树,由二叉树的性质可知,一棵具有 n 个节点的二叉树,对应的二叉链表中共有 2n 个指针域,其中 n-1 个用于指向除根节点以外的 n-1 个节点,另外n+1个指针域为空。可以利用二叉链表中的这些空指针域来存放节点的前驱和后继,即可找到线索二叉树。

 

 

线索二叉树的创建

 

 

 

代码实现

#include<stdio.h>
#include<stdlib.h>
#include<string.h> 

typedef char DATE;
typedef enum
{
   subtree,
   thread
}nodeflag;

typedef struct threadtree
{
	DATE date;
    nodeflag lflag;
	nodeflag rflag;
	struct threadtree *left;
	struct threadtree *right;	
}threadbintree;
threadbintree *previous=NULL;


//设置根节点 
threadb
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值