void InThread(TBTNode *p, TBTNode *&pre) {
if (p != NULL) {
InThread(p->lchild, pre);
if (p->lchild == NULL) {
p->lchild = pre;
p->ltag = 1;
}
if (pre != NULL && pre->rchild == NULL) {
pre->rchild = p;
pre->rtag = 1;
}
pre = p;
InThread(p->rchild, pre);
}
}
void CreateInThread(TBTNode *root) {
TBTNode *pre = NULL;
if (root != NULL) {
InThread(root, pre);
pre->rchild = NULL;//pre point to the last node
pre->rtag = 1;//中序遍历的最后一个结点没有右孩子
}
}