Description

假如对二叉树T和具有相同高度的满二叉树编号,如果T与满二叉树相同编号的节点位置相同,那么称二叉树T是一棵完全二叉树。现在根据边的连接情况判断一棵树是否是完全二叉树。

Input

输入分两部分:
第一部分:一个整数T,代表测试组数
第二部分:接下来有T组数据,每组的第一行有2个整数n(0 < n < 1024)和r(1<=r<=n), 表示结点数和树根,接下来n-1行每行有2个整数a,b (1 <= a,b <= n)表示a结点和b结点有一条边相连,如果a是b的根结点,则b是a的左子结点,如果b是a的根结点,则a是b的右子结点(数据保证是一棵树而不是一座森林)

Output

对于每组测试,如果对应的是完全二叉树 输出yes 否则输出no

Sample Input

2
5 1
1 2
3 1
4 2
2 5
5 1
1 2
3 1
4 2
3 5

Sample Output

yes
no

顺序存储

#include<stdio.h>
int chazhao(int x,int y,int n,int a[],int *p);
int panduan(int a[],int n);
void Output(int a[],int n);
int main()
{int T;scanf("%d",&T);while(T--){int n,g;scanf("%d%d",&n,&g);int a[10000]={0};//初始化 a[1]=g;// 根节点进入数组 int x,y;int p=0,max=1;//max代表数组最大长度 for(int i=1;i<n;i++){scanf("%d%d",&x,&y);int flag=chazhao(x,y,max,a,&p);//查找x,y中那个为根 指针带回根的位置 if(flag)//返回1   代表x 是根 {a[p*2]=y;if(p*2>max)//更新最大长度 {max=p*2;}}else{a[p*2+1]=x;if(p*2+1>max)//更新最大长度 {max=p*2+1;}}}//Output(a,max);int o=panduan(a,max);//判断从a[1]到a[max]是否全为0 if(o==0)printf("no\n");if(o==1)printf("yes\n");}
}
int chazhao(int x,int y,int n,int a[],int *p)
{for(int i=1;i<=n;i++){if(a[i]==x){*p=i;return 1;}if(a[i]==y){*p=i;return 0;}}
}
int panduan(int a[],int n)
{for(int i=1;i<=n;i++){if(a[i]==0)return 0;}return 1;
}
void Output(int a[],int n)
{for(int i=1;i<=n;i++){printf("%d",a[i]);}printf("\n");
}

判断完全二叉树(顺序存储)相关推荐

  1. 判断完全二叉树及求二叉树深度完整代码

    完全二叉树定义:一棵深度为k的有n个结点的二叉树,对树中的结点按从上至下.从左到右的顺序进行编号,如果编号为i(1≤i≤n)的结点与满二叉树中编号为i的结点在二叉树中的位置相同,则这棵二叉树称为完全二 ...

  2. PAT甲级1110 Complete Binary Tree:[C++题解]判断完全二叉树

    文章目录 题目分析 题目链接 题目分析 分析: 按照层序的顺序将完全二叉树存在下标从1开始的数组中.如果是完全二叉树,会将数组中1 ~ n这些位置填满,最大下标就是n,如果最大下标大于n,说明中间有空 ...

  3. 1110 Complete Binary Tree (25 分)【难度: 一般 / 知识点: 判断完全二叉树】

    https://pintia.cn/problem-sets/994805342720868352/problems/994805359372255232 建树并给其赋值,如果是完全二叉树,那么max ...

  4. c语言完全二叉树原理,C语言判断完全二叉树

    满意答案 MiC资讯 2013.04.27 采纳率:45%    等级:12 已帮助:15954人 lz 完成了 #include "stdio.h" #include " ...

  5. 判断二叉树是否为完全二叉树

    判断二叉树是否为完全二叉树? 提示:本节仍然是重点说二叉树的DP递归套路,非常重要而且容易理解 二叉树的动态规划树形DP递归套路系列文章有这些,可以帮助你快速掌握树形DP的题目解题思想,就一个套路: ...

  6. PAT1123 Is It a Complete AVL Tree(AVL树完全二叉树)

    题意: 给出一系列数,要求组成AVL树,最后层序输出,并且判断是否为一个完全二叉树 要点: 这题就是一个AVL树的插入和判断完全二叉树,之前分别都有出现过,AVL树的建立需要记忆. #include& ...

  7. PAT甲级1123 Is It a Complete AVL Tree (30分):[C++题解]建立平衡树、bfs,判完全二叉树

    文章目录 题目分析 题目链接 题目分析 来源:pat网站 本题作为进阶题,它的基础知识点如下几题. PAT甲级1066 Root of AVL Tree (25分):[C++题解]建立平衡树(AVL树 ...

  8. 一道关于完全二叉树的考研题

    判断完全二叉树 编辑 若设二叉树的深度为h,除第 h 层外,其它各层 (1-h-1) 的结点数都达到最大个数,第 h 层所有的结点都连续集中在最左边,这就是完全二叉树.

  9. 数据结构之完全二叉树

    一.完全二叉树定义 完全二叉树(Complete Binary Tree) 若设二叉树的深度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第 h 层所有的结点都连续集中在最左 ...

  10. 【大总结2】大学两年,写了这篇几十万字的干货总结

    本文是我大学两年知识的总结.涵盖数据结构.算法.语言基础.操作系统.关系数据库.NOSQL.网络/前端/项目基础知识.安全和测试.框架的学习.中间件和工具.设计模式和框架原理.我推荐的资料.我的建议 ...

最新文章

  1. c语言合法的数据类型关键字有哪些,C语言提供的合法的数据类型关键字是_________....
  2. c#对oracle操作时候 出现的乱码问题。
  3. 【转载】10个最“优秀”的代码注释
  4. C++Primer学习笔记:第3章 字符串、向量和数组
  5. Deepin安装最新显卡RTX2080Ti及CUDA10.1
  6. zabbix mysql 脚本路径_Zabbix监控MySQL脚本
  7. vue2.0-脚手架-todolist案例
  8. jQuery和react实现二维码
  9. 前方两万字高能预警!SMBGhost SMBleed 漏洞深入研究
  10. python连接hive kerberos_数据库开发实战教程:使用Python连接Kerberos的Presto
  11. 14.UNIX 环境高级编程--高级IO
  12. paip.提升程序稳定性---最佳实践
  13. JDBC 数据库增删改查的通用代码示例详解
  14. 厘米换算英尺英寸(C语言程序设计)
  15. java 根据拼音查询汉字_Java 根据汉字获取其拼音
  16. 2021牛客多校6 I Intervals on the Ring
  17. 中国ROHS 2.0 ---sj/t 11364-2014
  18. 内置函数总结(待更新)C++
  19. NVIDIA Jetson之远程控制软件NoMachine安装使用
  20. 【Go】Go Ubuntu 安装 gvm:Go 版本管理工具

热门文章

  1. 雅虎卖身不影响梅耶尔赚钱 她总薪酬2.2亿美元
  2. 数据迁移其实是很难的
  3. PostgreSQL在何处处理 sql查询之二十五
  4. win8 64位 iis8 安装.net1.1
  5. 一个简单的通用序列数据结构
  6. java对日期设置时间和对日期加减周
  7. 用new/delete动态创建数组| 一维/二维/三维
  8. 过来人谈在美国大学里的中国研究生
  9. 引入springboot的两种方式以及springboot容器的引入
  10. Dyn披露DDoS攻击细节:幕后是10万台的物联网设备僵尸网络