线索二叉树与二叉树的不同在于,线索二叉树多了两个标识域,便于二叉树寻找前驱和后继,使得遍历二叉树的效率大大提高
typedef struct tree
{
char data;
int Ltag,Rtag;
struct tree *Lchild,*Rchild;
}Tree;
其中Ltag和Rtag为标识域,其意义为:
- 如果Ltag = 0,则表示Lchild为指针,指向节点的左孩子;如果Ltag = 1,则表示Lchild为线索,指向节点的直接前驱
- 如果Rtag = 0,则表示Rchild为指针,指向节点的右孩子;如果Rtag = 1,则表示Rchild为线索,指向节点的直接后继
1.创建二叉树
void CreateTree(Tree *&T) //先序遍历创建二叉树
{
char ch;
scanf(" %c",&ch); //输入数据域信息
if(ch == '#')
T = NULL;
else
{
T = (Tree*)malloc(sizeof(Tree)); //为新建节点申请堆空间
T->data =