C++中序遍历线索化二叉树的代码
时间: 2023-11-22 18:04:49 浏览: 76
以下是C++中序遍历线索化二叉树的代码:
```c++
typedef struct ThreadNode{
ElemType data;
struct ThreadNode *lchild, *rchild;
int ltag, rtag;
}ThreadNode, *ThreadTree;
ThreadNode *pre = NULL; //全局变量,始终指向刚刚访问过的结点
void InThread(ThreadTree &p){
if(p != NULL){
InThread(p->lchild); //递归左子树线索化
if(p->lchild == NULL){ //建立当前结点的前驱线索
p->lchild = pre; p->ltag = 1;
}
if(pre != NULL && pre->rchild == NULL){ //建立当前结点的后继线索
pre->rchild = p;
pre->rtag = 1;
}
pre = p; //保持pre指向p的前驱
InThread(p->rchild); //递归右子树线索化
}
}
void CreateInThread(ThreadTree &T){
if(T != NULL){
InThread(T);
if(pre->rchild == NULL){ //处理遍历的最后一个结点
pre->rchild = NULL;
pre->rtag = 1;
}
}
}
```
阅读全文