2011-04-22 21:25:55 #include<iostream> #include<stack> #include<string> #define N 10010 using namespace std; struct Node { int color; Node* lChild; Node* rChild; }nodes[N],*head,*temp; void creatTree(char *str) { int i,j; stack<Node*> sta; head=temp=nodes; for(i=0,j=1;str[i]!='/0';i++) { if(str[i]=='0') { temp->lChild=temp->rChild=NULL; if(sta.empty()) break; temp=sta.top(); sta.pop(); } else if(str[i]=='1') { temp->lChild=nodes+(j++); temp->rChild=NULL; temp=temp->lChild; } else { temp->lChild=nodes+(j++); temp->rChild=nodes+(j++); sta.push(temp->rChild); temp=temp->lChild; } } } int main() { int i,j; char str[N]; while (scanf("%s",str)!=EOF) { creatTree(str); /*for(i=0;i<strlen(str);i++) { nodes[i].color=i; } for(i=0;i<strlen(str);i++) { cout<<"nodes "<<i<<":"<<nodes[i].color<<" "; if(nodes[i].lChild!=NULL) cout<<"L:"<<nodes[i].lChild->color<<" "; else cout<<"L:NULL"<<" "; if(nodes[i].rChild!=NULL) cout<<"R:"<<nodes[i].rChild->color<<" "; else cout<<"R:NULL"<<" "; cout<<endl; }*/ } return 0; }