一、结构体定义
typedef struct Tree{
int data;
struct Tree* left;
struct Tree* right;
int ltag,rtag;
}Tree,*BiTree;
二、代码
Status inThread(BiTree tree,BiTree &pre){
if(tree == NULL){
return ERROR;
}
inThread(tree->left,pre);
if(tree->left == NULL){
tree->left = pre;
tree->ltag = 1;
}
if(pre != NULL&&pre->right == NULL){
pre->right = tree;
pre->rtag = 1;
}
pre = tree;
inThread(tree->right,pre);
return OK;
}
BiTree first(BiTree tree){
while(tree->ltag == 0){
tree = tree->left;
}
return tree;
}
BiTree next(BiTree tree){
if(tree->rtag == 0){
return first(tree->right);
}
return tree->right;
}
Status inOrder(BiTree tree){
for(BiTree node = first(tree);node != NULL;node = next(node)){
visit(node);
}
return OK;
}