//一些辅助的全局变量,用于查找结点p的前驱
BiTNode *p; //p指向目标结点
BiTNode *pre = NULL; //指向当前访问结点的前驱
BiTNode *final = NULL; //用来记录最终结果
//中序遍历
void InOrder(BiTree T){
if(T!=NULL){
InOrder(T->lchild); //递归遍历左子树
visit(T); //访问根节点
InOrder(T->rchild); //递归遍历右子树
}
}
//访问结点q
void visit(BiTNode *q){
if(q==p) //当前访问结点刚好是p结点
final = pre; //找到p的前驱
else
pre = q; //pre指向当前访问的结点
}
一、中序线索化
//全局变量 pre 指向当前访问结点的前驱
ThreadNode *pre = NULL;
//线索二叉树结点
typedef struct ThreadNode{
ElemType data;
struct ThreadNode *lchild,*rchild;
int ltag,rtag; //左、右线索标志
}ThreadNode,* Th