1 #include<bits/stdc++.h>
2 using namespace std;
3 typedef struct TreeNode *Tree; //定义了一个叫做TreeNode的结构体指针 *Tree
4 typedef char ElementType;
5
6 struct TreeNode{
7 char val;
8 Tree left;
9 Tree right;
10 };
11 stack<char>sta;
12 Tree Creat()
13 {
14 char c = sta.top();
15 sta.pop();
16 Tree T = (Tree)malloc(sizeof(struct TreeNode)); //创建新结点T
17 if(c=='.')T = NULL;
18 else
19 { //右左根?
20 T->right = Creat();
21 T->left = Creat();
22 T->val = c;
23 }
24 return T; //返回头节点T
25 }
26 void xx(Tree &t)
27 {
28 cout<<t->val;
29 if(t->left)xx(t->left);
30 if(t->right)xx(t->right);
31 }
32 int main()
33 {
34 string s;
35 cin>>s;
36 for(int i=0;i<s.length();i++)
37 sta.push(s[i]); //用栈存储二叉树结点,可以实现从后往前遍历
38 Tree T = Creat(); //后序构造二叉树
39 xx(T); //先序遍历
40 return 0;
41 }