1110. Complete Binary Tree (25)
2016-03-14 11:38
507 查看
传送门://https://www.patest.cn/contests/pat-a-practise/1110
312比赛的时候 由于读入方式有错 看到2个 - - 就用char来接收 导致3个测试点过不去,后来改正确后顺利AC
AC 代码
#include <iostream>
#include <vector>
#include <map>
#include <unordered_map>
#include <set>
#include <algorithm>
#include <string>
#include <string.h>
#include <cstdio>
#include <queue>
#include <stack>
#include <limits>
using namespace std;
struct Node{
int no;
Node *parent,*left,*right;
Node():parent(NULL),left(NULL),right(NULL){};
};
int main()
{
int n;
scanf("%d",&n);
vector<Node *>tree;
string a,b;
for(int i=0;i<n;++i)
tree.push_back(new Node());
for(int i=0;i<n;++i){
cin>>a>>b;
tree[i]->no = i;
if(a[0]!='-'){
int x;
sscanf(a.c_str(),"%d",&x);
tree[x]->parent = tree[i];
tree[i]->left = tree[x];
}
if(b[0]!='-'){
int x;
sscanf(b.c_str(),"%d",&x);
tree[x]->parent = tree[i];
tree[i]->right = tree[x];
}
}
Node *root = NULL;
for(int i=0;i<n;++i){
if(tree[i]->parent == NULL){
root = tree[i];
break;
}
}
queue<Node *>q;
vector<int>ans;
if(root){
q.push(root);
ans.push_back(root->no);
}
while(!q.empty()){
Node * p = q.front();
q.pop();
if(p->left){
q.push(p->left);
ans.push_back(p->left->no);
}else
break;
if(p->right){
q.push(p->right);
ans.push_back(p->right->no);
}else
break;
}
if(ans.size()==n){
printf("YES %d\n",ans.back());
}else
printf("NO %d\n",ans[0]);
return 0;
}
312比赛的时候 由于读入方式有错 看到2个 - - 就用char来接收 导致3个测试点过不去,后来改正确后顺利AC
AC 代码
#include <iostream>
#include <vector>
#include <map>
#include <unordered_map>
#include <set>
#include <algorithm>
#include <string>
#include <string.h>
#include <cstdio>
#include <queue>
#include <stack>
#include <limits>
using namespace std;
struct Node{
int no;
Node *parent,*left,*right;
Node():parent(NULL),left(NULL),right(NULL){};
};
int main()
{
int n;
scanf("%d",&n);
vector<Node *>tree;
string a,b;
for(int i=0;i<n;++i)
tree.push_back(new Node());
for(int i=0;i<n;++i){
cin>>a>>b;
tree[i]->no = i;
if(a[0]!='-'){
int x;
sscanf(a.c_str(),"%d",&x);
tree[x]->parent = tree[i];
tree[i]->left = tree[x];
}
if(b[0]!='-'){
int x;
sscanf(b.c_str(),"%d",&x);
tree[x]->parent = tree[i];
tree[i]->right = tree[x];
}
}
Node *root = NULL;
for(int i=0;i<n;++i){
if(tree[i]->parent == NULL){
root = tree[i];
break;
}
}
queue<Node *>q;
vector<int>ans;
if(root){
q.push(root);
ans.push_back(root->no);
}
while(!q.empty()){
Node * p = q.front();
q.pop();
if(p->left){
q.push(p->left);
ans.push_back(p->left->no);
}else
break;
if(p->right){
q.push(p->right);
ans.push_back(p->right->no);
}else
break;
}
if(ans.size()==n){
printf("YES %d\n",ans.back());
}else
printf("NO %d\n",ans[0]);
return 0;
}
相关文章推荐
- is not a function
- FancyButtons一个漂亮的按钮库
- java线程基础知识
- php附近的人
- 通过java反射,封装bean
- ios中文字添加删除线
- Android 蓝牙开发实例--蓝牙聊天程序的设计和实现
- javascript实现数组去重的多种方法
- 红黑树
- 帮朋友转发招聘信息 南京知名互联网公司招聘java、测试、前端,具体私聊
- 命令模式
- 汽车倒车入库技巧图解--倒车方式一字倒车-----非字倒车---斜45度倒车
- 【python】编程语言入门经典100例--39
- JAVA 字节码操作利器javassist
- XP提示没有通过Windows 徽标测试的解决方法
- Spring在代码中获取bean的几种方式
- Maven学习总结(六)——Maven与Eclipse整合
- iOS输入视图(如UITextView UITextField)点击时没有弹出键盘输入窗
- YII Framework框架教程之日志用法详解
- HttpURLConnection-proxy