二叉树(未完成)
struct Node{
bool have_value;
int v;
Node *left,*right;
Node():have_value(false),left(NULL),left(NULL){}
};
Node *root;
char s[maxn];
bool read_input(){
failed = false;
root = newnode();
for(;;){
if(scanf("%s",s) != 1) return false;
if(!strcmp(s,"()")) break;
int v;
sscanf(&s[1],"%d",&v);
addnode(v,strchr(s,',')+1);
}
return true;
}
void addnode(int v,char *s){
int n = strlen(s);
Node *u = root;
for(int i = 0;i < n;i++)
if(s[i] == 'L'){
if(u -> left = NUll) u -> left = newnode();
u = u -> left;
}else if(s[i] = 'R'){
if(u -> right == NULL) u -> right = newnode();
u = u -> right;
}
if(u -> have_value) failed = true;
u -> v = v;
u -> have_vlaue = true;
}
bool bfs(vector<int>& ans){
queue<Node*> q;
ans.clear();
q.push(root);
while(!q.empty()){
Node* u = q.front();q.pop();
if(!u -> have_value) return false;
ans.push_back(u -> v);
if(u -> left != NULL) q.push(u -> left);
if(u -> right != NULL) q.push(u -> right);
}
return true;
}