uva122
/* 1:newNode() 2: c , “ ” , '\0' */
#include <iostream>
#include <cstdio>
#include <queue>
#include <vector>
#include <cstring>
using namespace std;
const int maxn = 256 + 10;
struct Node {
int val;
Node* left, *right;
bool valued;
Node() : left(NULL), right(NULL), valued(false) {}
};
Node * root;
Node* newNode() {
return new Node(); //
}
void clear_tree(Node * n) {
if(n == NULL) return;
clear_tree(n->left);
clear_tree(n->right);
delete n;
}
char cmd[maxn];
bool creat_failed;
bool make_tree() { //
creat_failed = false;
clear_tree(root);
root = newNode(); //new node
while(true) {
if(scanf("%s", cmd) != 1) return false;
if(!strcmp(cmd, "()")) break;
int v;
sscanf(&cmd[1], "%d", &v); // value
char * pos;
pos = strchr(cmd, ',') + 1; // ( )
//
int len = strlen(pos);
Node * r = root;
for(int i = 0; i < len; i++) {
if(pos[i] == 'L') {
if(r->left == NULL) r->left = newNode();
r = r->left;
}
else if(pos[i] == 'R') {
if(r->right == NULL) r->right = newNode();
r = r->right;
} // “)”
}
if(r->valued == true) creat_failed = true;
r->val = v;
r->valued = true;
}
return true;
}
bool bfs(vector<int> &ans) {
queue<Node*> q;
ans.clear();
q.push(root);
while(!q.empty()) {
Node* node = q.front(); q.pop();
if(node->valued == false) return false;
ans.push_back(node->val);
if(node->left != NULL) q.push(node->left);
if(node->right != NULL) q.push(node->right);
}
return true;
}
int main()
{
vector<int> ans; //
while(make_tree()) {
ans.clear();
if(!bfs(ans)) creat_failed = true;
if(creat_failed) {
printf("not complete
");
}
else {
for(int i = 0; i < ans.size(); i++) {
if(i != 0) printf(" ");
printf("%d", ans[i]);
}
printf("
");
}
}
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.