在建立二叉树的过程中,我们还有大量的指针并未使用,这显然是一种浪费,在二叉树的实际应用中,我们可以根据需要,利用这些空指针存放一些信息。方法之一就是将其变成一颗穿线二叉树。
穿线二叉树有三个过程。
先给一下穿线二叉树的结构
typedef struct k
{
char data;
struct k *l,*r;
int ltag;//是否指向前驱
int rtag;//是否指向后继
}btree;
先建立一棵二叉树
btree *creatmybtree()
{
char ch;
scanf("%c",&ch);
if(ch=='#')
return NULL;
btree *p;
p=(btree*)malloc(sizeof(btree));
p->data=ch;
p->l=creatmybtree();
p->r=creatmybtree();
return p;
}
然后开始对建立的二叉树进行线索化
btree *pre=NULL;//我们先将前驱初始化为空