BJFUOJ:基于二叉链表的二叉树的遍历
#include<bits/stdc++.h>
using namespace std;
typedef struct BiTnode{
char data;
struct BiTnode *left;
struct BiTnode *right;
}BiTnode,*BiTree;
void CreatTree(BiTree &t,char s[],int &i){
if(s[i] == '0') t = NULL;
else{
t = new BiTnode;
t->data = s[i];
CreatTree(t->left,s,++i);
CreatTree(t->right,s,++i);
}
}
void PreOrder(BiTree &t){
if(t){
cout<<t->data;
PreOrder(t->left);
PreOrder(t->right);
}
}
void InOrder(BiTree &t){
if(t){
InOrder(t->left);
cout<<t->data;
InOrder(t->right);
}
}
void PostOrder(BiTree &t){
if(t){
PostOrder(t->left);
PostOrder(t->right);
cout<<t->data;
}
}
int main(){
while(1){
char s[100];
cin>>s;
if(s[0] == '0') break;
BiTree t;
int i = 0;
CreatTree(t,s,i);
PreOrder(t);
cout<<endl;
InOrder(t);
cout<<endl;
PostOrder(t);
cout<<endl;
}
}