判断完全二叉树(顺序存储)
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");
}
判断完全二叉树(顺序存储)相关推荐
- 判断完全二叉树及求二叉树深度完整代码
完全二叉树定义:一棵深度为k的有n个结点的二叉树,对树中的结点按从上至下.从左到右的顺序进行编号,如果编号为i(1≤i≤n)的结点与满二叉树中编号为i的结点在二叉树中的位置相同,则这棵二叉树称为完全二 ...
- PAT甲级1110 Complete Binary Tree:[C++题解]判断完全二叉树
文章目录 题目分析 题目链接 题目分析 分析: 按照层序的顺序将完全二叉树存在下标从1开始的数组中.如果是完全二叉树,会将数组中1 ~ n这些位置填满,最大下标就是n,如果最大下标大于n,说明中间有空 ...
- 1110 Complete Binary Tree (25 分)【难度: 一般 / 知识点: 判断完全二叉树】
https://pintia.cn/problem-sets/994805342720868352/problems/994805359372255232 建树并给其赋值,如果是完全二叉树,那么max ...
- c语言完全二叉树原理,C语言判断完全二叉树
满意答案 MiC资讯 2013.04.27 采纳率:45% 等级:12 已帮助:15954人 lz 完成了 #include "stdio.h" #include " ...
- 判断二叉树是否为完全二叉树
判断二叉树是否为完全二叉树? 提示:本节仍然是重点说二叉树的DP递归套路,非常重要而且容易理解 二叉树的动态规划树形DP递归套路系列文章有这些,可以帮助你快速掌握树形DP的题目解题思想,就一个套路: ...
- PAT1123 Is It a Complete AVL Tree(AVL树完全二叉树)
题意: 给出一系列数,要求组成AVL树,最后层序输出,并且判断是否为一个完全二叉树 要点: 这题就是一个AVL树的插入和判断完全二叉树,之前分别都有出现过,AVL树的建立需要记忆. #include& ...
- PAT甲级1123 Is It a Complete AVL Tree (30分):[C++题解]建立平衡树、bfs,判完全二叉树
文章目录 题目分析 题目链接 题目分析 来源:pat网站 本题作为进阶题,它的基础知识点如下几题. PAT甲级1066 Root of AVL Tree (25分):[C++题解]建立平衡树(AVL树 ...
- 一道关于完全二叉树的考研题
判断完全二叉树 编辑 若设二叉树的深度为h,除第 h 层外,其它各层 (1-h-1) 的结点数都达到最大个数,第 h 层所有的结点都连续集中在最左边,这就是完全二叉树.
- 数据结构之完全二叉树
一.完全二叉树定义 完全二叉树(Complete Binary Tree) 若设二叉树的深度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第 h 层所有的结点都连续集中在最左 ...
- 【大总结2】大学两年,写了这篇几十万字的干货总结
本文是我大学两年知识的总结.涵盖数据结构.算法.语言基础.操作系统.关系数据库.NOSQL.网络/前端/项目基础知识.安全和测试.框架的学习.中间件和工具.设计模式和框架原理.我推荐的资料.我的建议 ...
最新文章
- c语言合法的数据类型关键字有哪些,C语言提供的合法的数据类型关键字是_________....
- c#对oracle操作时候 出现的乱码问题。
- 【转载】10个最“优秀”的代码注释
- C++Primer学习笔记:第3章 字符串、向量和数组
- Deepin安装最新显卡RTX2080Ti及CUDA10.1
- zabbix mysql 脚本路径_Zabbix监控MySQL脚本
- vue2.0-脚手架-todolist案例
- jQuery和react实现二维码
- 前方两万字高能预警!SMBGhost SMBleed 漏洞深入研究
- python连接hive kerberos_数据库开发实战教程:使用Python连接Kerberos的Presto
- 14.UNIX 环境高级编程--高级IO
- paip.提升程序稳定性---最佳实践
- JDBC 数据库增删改查的通用代码示例详解
- 厘米换算英尺英寸(C语言程序设计)
- java 根据拼音查询汉字_Java 根据汉字获取其拼音
- 2021牛客多校6 I Intervals on the Ring
- 中国ROHS 2.0 ---sj/t 11364-2014
- 内置函数总结(待更新)C++
- NVIDIA Jetson之远程控制软件NoMachine安装使用
- 【Go】Go Ubuntu 安装 gvm:Go 版本管理工具