#include<iostream>
using namespace std;
#define MAX 10
typedef int ElemType;
typedef int status;
typedef struct Ptree {
ElemType data;
struct Ptree* lchild, * rchild;
int ltool,rtool;
}Ptree;
typedef struct Ptree* tree;
tree pr = NULL; /*全局变量*/
status Initlink(tree* t)
{
ElemType ch;
cout << "请输入值" << endl;
cin >> ch;
tree p = new Ptree;
p->data = ch;
p->ltool = 0;
p->rtool = 0;
if (ch == -1)
{
cout << "ok,此时为空" << endl;
(*t) = NULL;
return 1;
}
(*t) = p;
Initlink(&(*t)->lchild);
Initlink(&(*t)->rchild);
cout << "sbsbsb" << (*t)->data << endl;
return 0;
}
void recreative(tree t)
{
if (t)
{
recreative(t->lchild);
if (t->lchild == NULL)
{
t->lchild = pr;
t->ltool = 1;
}
if (pr&&!pr->rchild)
{
pr->rchild = t;
pr->rtool = 1;
}
pr = t;
recreative(t->rchild);
}
}
void print(tree t)
{
while (t->ltool == 0)
t = t->lchild;
cout << t->data;
while (t->rtool == 1)
{
t = t->rchild;
cout << t->data;
if (t->rtool == 0)
{
t = t->rchild;
}
while (t->ltool == 0)
t = t->lchild;
cout << t->data;
}
}
int main()
{
/*使用头结点,可以从前或后使用中序*/
tree t;
t = new Ptree;
t->ltool = 0;
t->rtool = 1;
Initlink(&(t->lchild));
recreative(t);
print(t);
}
该图数使用循环来遍历(中序)二叉树