| #include <stdio.h> |
| #include <queue> |
| using namespace std; |
| struct Treenode { |
| char num; |
| Treenode* lchild; |
| Treenode* rchild; |
| }; |
| |
| void Gettree_sim(Treenode* &root, queue<Treenode*> &que, char data) { |
| Treenode* newNode = NULL; |
| |
| |
| if (data != '#') { |
| newNode = new Treenode; |
| newNode->num = data; |
| newNode->lchild = NULL; |
| newNode->rchild = NULL; |
| que.push(newNode); |
| } |
| |
| |
| if (root == NULL) { |
| root = newNode; |
| return; |
| } |
| |
| |
| if (!que.empty()) { |
| Treenode* front = que.front(); |
| |
| |
| if (front->lchild == NULL) { |
| front->lchild = newNode; |
| } |
| |
| else if (front->rchild == NULL) { |
| front->rchild = newNode; |
| que.pop(); |
| } |
| } |
| } |
| void preorder(Treenode* root) { |
| |
| if (root != NULL) { |
| printf("%c", root->num); |
| preorder(root->lchild); |
| preorder(root->rchild); |
| } |
| else { |
| return; |
| } |
| } |
| int main() { |
| char data; |
| Treenode* root = NULL; |
| queue<Queuenode*> que; |
| queue<Treenode*> que_tree; |
| |
| while (true) { |
| scanf("%c", &data); |
| if (data == '$') |
| break; |
| Gettree_sim(root, que_tree, data); |
| } |
| |
| preorder(root); |
| |
| return 0; |
| } |