线索二叉树就是把左或者右孩子为空的位置,设置为前驱或者后继
因为中序遍历第一个元素是C,没有前驱,最后一个元素F也没有后继,所以我们设置一个头结点,C的前驱和F的后继都指向投节点,头节点的前驱为根节点,后继为最后一个元素F。
#include"stdio.h"
#include"stdlib.h"
//线索标志位
//link表示指向左右孩子
//thread表示指向前驱后继
enum{
link, thread};
//二叉树结构体
struct btree
{
char data;
struct btree *lchild, *rchild;
int ltag, rtag;
};
//全局变量,指向刚访问过的结点
struct btree *pre;
//用户按照前序遍历方式创建二叉树
void create_btree(struct btree **T)
{
char c;
*T = (struct btree *)malloc(sizeof(struct btree));
scanf("%c", &c);
if(' ' == c)