#include <bits/stdc++.h>
using namespace std;
typedef struct TBTNode {
char data;
int ltag, rtag;
struct TBTNode *lchild, *rchild;
} TBTNode;
void visit(TBTNode *p) {
cout << " " << p->data ;
}
void InThread(TBTNode *p, TBTNode *&pre)
{ //&表示引用,node *&head一般用在插入结点函数中,用&head引用可以修改实参,在这里绝不能理解为取地址
if (p) {
InThread(p->lchild, pre);
if (!p->lchild) {
p->lchild = p;
p->ltag = 1;
}
if (pre && !pre->rchild) {
p->rchild = p;
p->rtag = 1;
}
pre = p;
InThread(p->rchild, pre);
}
}
void createInThread(TBTNode *root)
{
TBTNode *pre = NULL;
if (!root) {
InThread(root, pre);
pre->rchild = NULL;
pre->rtag = 1;
}
}
TBTNode *First(TBTNode *p)
{
while (!p->ltag)
p = p->lchild;
return p;
}
TBTNode *Next(TBTNode *p)
{
if (!p->rtag)
return First(p->rchild);
else
return p->rchild;
}
void Inorder(TBTNode *root)
{
for (TBTNode *p = First(root); p != NULL; p = Next(p))
visit(p);
}
int main()
{
ios::sync_with_stdio(false);
// 未完待更...
return 0;
}