大会员可查看代码,点此开通大会员
#include<bits/stdc++.h>
using namespace std;
typedef struct node{
char c;
struct node *lchild;
struct node *rchild;
struct node *parent;
}BiTreeNode, *BiTreeNodePtr;
char str[1000];
BiTreeNodePtr generateBiTree_iterative(char *str){
stack<BiTreeNodePtr*> tempStack;
BiTreeNodePtr root = new BiTreeNode;
tempStack.push(&root);
for(int i = 0; i < strlen(str);i++){
BiTreeNodePtr *node = tempStack.top();
tempStack.pop();
if(str[i] != '#'){
(*node)->c = str[i];
// cout << str[i] << " " << "on tree;;;"<<endl;
// if(i > 0){
// cout << "his parent is" << (*node)->parent->c << endl;
// }
(*node)->lchild = new BiTreeNode;
(*node)->lchild->parent = *node;
(*node)->rchild = new BiTreeNode;
(*node)->rchild->parent = *node;
tempStack.push(&((*node)->rchild));
tempStack.push(&((*node)->lchild));
}
else{
// cout << i << ": # " << "set null" << endl;
*node = nullptr;
}
}
while(!tempStack.empty()){
*tempStack.top() = nullptr;
tempStack.pop();
}
return root;
}
void travelsal_middel(BiTreeNodePtr &node){
if(node != NULL){
travelsal_middel(node->lchild);
cout << node->c << " ";
travelsal_middel(node->rchild);
}
}
int main(){
while(cin >> str){
BiTreeNodePtr root;
root = generateBiTree_iterative(str);
// if(root != NULL) cout << "T" << endl;
// else cout << "F" << endl;
// cout << (root->rchild == nullptr) << endl;
travelsal_middel(root);
cout << endl;
}
return 0;
}