PAT 1110
来源:互联网 发布:好用的桌面便签 知乎 编辑:程序博客网 时间:2024/06/06 09:11
PAT 1102的变形,注意1110需要支持2位数操作,层序遍历的时候检查中间是否有缺漏结点就可以了
#include <iostream>#include <string>#include <cstring>#include<algorithm>#include<cmath>#include <vector>#include <map>#include<stack>#include<queue>#include <stdio.h>using namespace std;#define MAX 20000+5#define INF 0x3f3f3f3fstruct BTree {int lchild, rchild;}t[MAX];int n;int main(){int i, root = -1;int node[250];char c1[10], c2[10];scanf("%d", &n);memset(node, 0, sizeof(node));for (i = 0; i < n; i++) {cin >> c1 >> c2;if (c1[0] == '-') {t[i].lchild = -1;}else {sscanf(c1, "%d", &t[i].lchild);node[t[i].lchild] = 1;}if (c2[0] == '-') {t[i].rchild = -1;}else {sscanf(c2, "%d", &t[i].rchild);node[t[i].rchild] = 1;}}for (i = 0; i < n; i++) {if (node[i] == 0) {root = i;break;}}queue<int>q;int cnt = 1, flag = 0, tmp;q.push(root);while (!q.empty()) {tmp = q.front();q.pop();if (t[tmp].lchild == -1) {flag = 1;break;}q.push(t[tmp].lchild);cnt++;if (cnt == n)break;if (t[tmp].rchild == -1) {flag = 1;break;}q.push(t[tmp].rchild);cnt++;if (cnt == n)break;}if (n == 1) {printf("YES 0\n");return 0;}if (flag)printf("NO %d\n", root);elseprintf("YES %d\n", t[tmp].rchild == -1 ? t[tmp].lchild : t[tmp].rchild);return 0;}
0 0
- PAT 1110
- PAT 1110
- PAT 1110
- PAT甲级1110
- pat
- 【PAT】
- PAT
- PAT
- PAT
- PAT
- PAT
- PAT
- PAT
- PAT
- PAT
- pat
- PAT
- PAT
- phpExcel 导出
- shiro.ini 配置详解
- Glide 加载Gif 导致cpu居高不下的解决办法
- eclipse中tomcat启动超时的解决方法
- Appium Python app 启动各参数的意思
- PAT 1110
- CSS+DIV布局中absolute和relative
- AndroidStudio加上类注释,方法注释模板
- Java读写Excel之POI超入门
- js 展示聊天动画
- Kotlin Primer·第四章·Kotlin 的类(上)
- HMM基础理论-前向算法
- 未来的12个趋势
- Emacs的orgmode基本使用教程