注意题目不是按照广度优先给出节点的,比如a下面左b右c,有可能下一个会给c的信息而不是b的
#include <iostream>
using namespace std;
typedef struct t{
char c;
t *right = NULL;
t *left = NULL;
}tree,*Tree;
Tree createTree(){
Tree Trees = new tree;
return Trees;
}
Tree Treearr[1000] = {NULL};
int mark = 0;
void getTree(int num,Tree &ance){
char char1,char2,char3;
for(int i=0;i<num;i++){
cin >> char1 >> char2 >> char3;
if(i==0){
Treearr[char1] = new tree;
ance = Treearr[char1];
Treearr[char1]->c = char1;
}
mark = (int)char1;
if(char2 != '*'){
Treearr[char2] = Treearr[mark]->left = new tree;
Treearr[mark]->left->c = char2;
Treearr[mark]->left->left = Treearr[mark]->left->right = NULL;
}
if(char3 != '*'){
Treearr[char3] = Treearr[mark]->right = new tree;
Treearr[mark]->right->c = char3;
Treearr[mark]->right->left = Treearr[mark]->right->right = NULL;
}
}
}
void putTree(Tree ance){
if(ance == NULL){
return ;
}
cout << ance->c;
putTree(ance->left);
putTree(ance->right);
}
int main()
{
Tree ancestor;
int num;
cin >> num;
getTree(num,ancestor);
putTree(ancestor);
}