#include<iostream>
using namespace std;
#define MAXSIZE 500
typedef struct tree{
char data;
struct tree *lchild;
struct tree *rchild;
int ltag;
int rtag;
}TreeNode,*Tree;
//线索二叉树
//中序二叉树线索化
//设置pre前序节点,初始化为NULL
//访问左子树
//判断当前节点的左孩子是否为空,如果为空,则将左孩子设置为的值指向前序指针,并左孩子tag设置为1
//判断前序节点的右孩子是否为空,如果为空,则将前序指针的右孩子指向当前节点,并将前序节点的右孩子的tag设置为1
//访问到当前节点的时候,将当前节点赋值给pre
//访问右子树
void inOrder(Tree &t,TreeNode *&pre){
if(t != NULL){
return;
}
//访问左子树
inOrder(t->lchild,pre);
if(t->lchild == NULL){
t->lchild = pre;
t->ltag = 1;
}
if(pre != NULL && pre->rchild == NULL){
pre->rchild = t;
pre->rtag =1;
}
//更新前序指针
pre = t;
//访问右子树
inOrder(t->rchild,pre);
}
二叉树,线索二叉树中序遍历
最新推荐文章于 2024-07-25 21:13:04 发布