题意:

输入一个正整数N(<=20),代表结点个数(0~N-1),接着输入N行每行包括每个结点的左右子结点,'-'表示无该子结点,输出是否是一颗完全二叉树,是的话输出最后一个子结点否则输出根节点。

trick:

用char输入子结点没有考虑两位数的结点。。。

stoi(x)可以将x转化为十进制整数

AAAAAccepted code:

 1 #define HAVE_STRUCT_TIMESPEC
2 #include<bits/stdc++.h>
3 using namespace std;
4 bool vis[1007];
5 int lchild[27],rchild[27];
6 int num[27];
7 int n;
8 int check(){
9 memset(vis,0,sizeof(vis));
10 for(int i=0;i<n;++i)
11 vis[num[i]]=1;
12 for(int i=1;i<=n;++i)
13 if(!vis[i])
14 return 0;
15 return 1;
16 }
17 int main(){
18 ios::sync_with_stdio(false);
19 cin.tie(NULL);
20 cout.tie(NULL);
21 cin>>n;
22 memset(lchild,-1,sizeof(lchild));
23 memset(rchild,-1,sizeof(rchild));
24 for(int i=0;i<n;++i){
25 string x,y;
26 cin>>x>>y;
27 if(x!="-")
28 lchild[i]=stoi(x),vis[stoi(x)]=1;
29 if(y!="-")
30 rchild[i]=stoi(y),vis[stoi(y)]=1;
31 }
32 int root=0;
33 for(int i=0;i<n;++i)
34 if(!vis[i])
35 root=i;
36 queue<int>q;
37 q.push(root);
38 int last=0;
39 num[root]=1;
40 while(!q.empty()){
41 int now=q.front();
42 last=now;
43 q.pop();
44 if(lchild[now]!=-1){
45 q.push(lchild[now]);
46 num[lchild[now]]=num[now]*2;
47 }
48 if(rchild[now]!=-1){
49 q.push(rchild[now]);
50 num[rchild[now]]=num[now]*2+1;
51 }
52 }
53 if(check()==1)
54 cout<<"YES "<<last;
55 else
56 cout<<"NO "<<root;
57 return 0;
58 }

【PAT甲级】1110 Complete Binary Tree (25分)的更多相关文章

  1. PAT甲级——1110 Complete Binary Tree (完全二叉树)

    此文章同步发布在CSDN上:https://blog.csdn.net/weixin_44385565/article/details/90317830   1110 Complete Binary ...

  2. PAT 甲级 1110 Complete Binary Tree

    https://pintia.cn/problem-sets/994805342720868352/problems/994805359372255232 Given a tree, you are ...

  3. 1110 Complete Binary Tree (25 分)

    Given a tree, you are supposed to tell if it is a complete binary tree. Input Specification: Each in ...

  4. PAT Advanced 1110 Complete Binary Tree (25) [完全⼆叉树]

    题目 Given a tree, you are supposed to tell if it is a complete binary tree. Input Specification: Each ...

  5. [二叉树建树&完全二叉树判断] 1110. Complete Binary Tree (25)

    1110. Complete Binary Tree (25) Given a tree, you are supposed to tell if it is a complete binary tr ...

  6. PAT甲级——A1110 Complete Binary Tree【25】

    Given a tree, you are supposed to tell if it is a complete binary tree. Input Specification: Each in ...

  7. 1110. Complete Binary Tree (25)

    Given a tree, you are supposed to tell if it is a complete binary tree. Input Specification: Each in ...

  8. PAT甲题题解-1110. Complete Binary Tree (25)-(判断是否为完全二叉树)

    题意:判断一个节点为n的二叉树是否为完全二叉树.Yes输出完全二叉树的最后一个节点,No输出根节点. 建树,然后分别将该树与节点树为n的二叉树相比较,统计对应的节点个数,如果为n,则为完全二叉树,否则 ...

  9. PAT (Advanced Level) 1110. Complete Binary Tree (25)

    判断一棵二叉树是否完全二叉树. #include<cstdio> #include<cstring> #include<cmath> #include<vec ...

随机推荐

  1. Echart的使用legend遇到的问题小记

    Echart的图标真的很漂亮,使用也相对简单.但是官网的配置项的例子我不是很能快速的使用,得思考一会.哈哈,可能我比较笨吧. 在作柱状图的时候,我是通过Ajax动态获取的数据,但是图例legend就是 ...

  2. 我的翻译--针对Outernet卫星信号的逆向工程

    前言 Outernet[1]是一家旨在让访问国际互联网更加方便自由的公司,他们使用卫星来广播维基百科或者其他网站.目前,他们的广播主要使用三颗国际海事卫星[3]的L波段[2],使其广播覆盖全球,大多数 ...

  3. AttributeError: 'SQLAlchemy' object has no attribute 'Foreignkey'

    在学习<Flask Web开发----基于Python的Web应用开发实战>的过程中,调试程序,如下图,运行报错: AttributeError: 'SQLAlchemy' object ...

  4. Java基础面试题总结之简述题

    一,数组的优缺点 在Java核心技术卷1中写到数组是一种数据结构,用来储存同一类型值的集合. 优点: 1,按照索引查询元素速度快,效率高 2,能存储大量数据 3,按照索引遍历数组方便 缺点: 1,长度 ...

  5. python之路正则补充模块

    match(从头匹配) 无分组  有分组=====================有括号 ======================================================= ...

  6. pytest学习5-mark用例分类

    使用Mark标记测试用例 通过使用pytest.mark你可以轻松地在测试用例上设置元数据.例如, 一些常用的内置标记: skip - 始终跳过该测试用例 skipif - 遇到特定情况跳过该测试用例 ...

  7. c#中转义字符\n和\r的区别

    在c#中\n代表换行,\r代表回车,但\r是把后面的字符覆盖前面的,例: "1234\n567" 输出的是 1234 567 "1234\r567"输出的是 5 ...

  8. FPGA设计的注意事项

    设计文档 一个完整的软件是由程序. 数据和文档三部分组成的. 在FPGA电路设计中, 撰写完善的设计文档是非常重要的. 对于一个比较复杂的设计来说, 各个子单元的功能各不相同, 实现的方法也不一样,各 ...

  9. QT离线安装包

    各个版本下载链接http://mirrors.ustc.edu.cn/qtproject/archive/qt http://www.qtcn.org/bbs/i.php

  10. mybatis(六):设计模式 - 模板方法模式