/*编一个程序,读入用户输入的一串先序遍历字符串,根据此字符串建立一个二叉树(以指针方式存储)。
例如如下的先序遍历字符串: ABC##DE#G##F### 其中“#”表示的是空格,空格字符代表空树。
建立起此二叉树以后,再对二叉树进行中序遍历,输出遍历结果。
输入abc##de#g##f###,输出cbegdfa *
1 #include <iostream>
2 #include <vector>
3 using namespace std;
4
5 typedef struct BiTree
6 {
7 char data;
8 struct BiTree* lchild= NULL;
9 struct BiTree* rchild = NULL;
10 };
11 int count ;
12 void CreateTree(BiTree* &T,string str)
13 {
14 char temp = str[count];
15 count = count +1;
16 if(temp == '#')
17 {
18 T = NULL;
19 return ;
20 }
21 else
22 {
23 T = (BiTree*)malloc(sizeof(BiTree));
24 T->data = temp;
25 CreateTree(T->lchild,str);
26 CreateTree(T->rchild,str);
27 return ;
28 }
29 }
30
31 void InOrderTravese(BiTree* T)
32 {
33 if(T==NULL)
34 return;
35 InOrderTravese(T->lchild);
36 cout<<T->data<<" ";
37 InOrderTravese(T->rchild);
38 }
39
40 int main()
41 {
42 string str;
43 BiTree* tree;
44 while(cin>>str)
45 {
46 count = 0;
47 CreateTree(tree,str);
48 InOrderTravese(tree);
49 cout<<endl;
50 }
51
52 return 0;
53 }