【数据结构pta】L3-1-二叉树及其遍历 / 二叉搜索树 / 完全二叉树 是否完全二叉搜索树分数 30
L3-1-二叉树及其遍历 / 二叉搜索树 / 完全二叉树 是否完全二叉搜索树
分数 30
全屏浏览题目
切换布局
作者 陈越
单位 浙江大学
将一系列给定数字顺序插入一个初始为空的二叉搜索树(定义为左子树键值大,右子树键值小),你需要判断最后的树是否一棵完全二叉树,并且给出其层序遍历的结果。
输入格式:
输入第一行给出一个不超过20的正整数N
;第二行给出N
个互不相同的正整数,其间以空格分隔。
输出格式:
将输入的N
个正整数顺序插入一个初始为空的二叉搜索树。在第一行中输出结果树的层序遍历结果,数字间以1个空格分隔,行的首尾不得有多余空格。第二行输出YES
,如果该树是完全二叉树;否则输出NO
。
输入样例1:
9
38 45 42 24 58 30 67 12 51
输出样例1:
38 45 24 58 42 30 12 67 51
YES
输入样例2:
8
38 24 12 45 58 67 42 51
输出样例2:
38 45 24 58 42 12 67 51
NO
答案:
#include<bits/stdc++.h>
using namespace std;
const int maxn = 21;
/*--------------------------------------------
* Author: Fw_022
* Begin: 2022年7月3日12:07:52
* End: 2022年7月3日12:48:06
* Time: 40 Min
-------------------------------------------- */
typedef struct tree
{int data;struct tree* left, * right;
}tree;int input(int a[])
{int n, i, j;cin >> n;for (i = 0; i < n; i++){cin >> a[i];}return n;
}void insertnode(int num, tree*& root)
{tree* newnode = new tree;newnode->data = num;newnode->left = newnode->right = NULL;if (!root)root = newnode;else{tree* p = root;while (p){if (num > p->data){if (p->left == NULL){p->left = newnode;return;}p = p->left;}else{if (p->right == NULL){p->right = newnode;return;}p = p->right;}}}
}tree* creattree(int a[],int n)
{tree* root = NULL;int i;for (i = 0; i < n; i++){insertnode(a[i], root);}return root;
}int dfs(tree* root)
{queue<tree*>q;q.push(root);int num = q.size();printf("%d", root->data);while (q.size()){tree* node = q.front();q.pop();if (node->left){q.push(node->left);printf(" %d", node->left->data);num++;}if (node->right){q.push(node->right);printf(" %d", node->right->data);num++;}}return num;
}int iscomplete(tree* root, int cnt)
{queue<tree*>q;q.push(root);int num = q.size();while (q.size() && num < cnt){tree* node = q.front();q.pop();if (node->left){q.push(node->left);num++;}else{if (num < cnt)return 0;}if (node->right){q.push(node->right);num++;}else{if (num < cnt)return 0;}}return 1;
}int main()
{int a[20];int n = input(a);tree* root = creattree(a, n);int num = dfs(root);int ans = iscomplete(root, num);if (ans)printf("\nYES");elseprintf("\nNO");
}
【数据结构pta】L3-1-二叉树及其遍历 / 二叉搜索树 / 完全二叉树 是否完全二叉搜索树分数 30相关推荐
- 数据结构(六)二叉树的遍历(递归非递归方法)
数据结构(六)二叉树的遍历(递归非递归方法) 一.递归方法 1.先序遍历 void PreOrder(BiTree T) {visit(T);PreOrder(T->LChild)PreOrde ...
- 数据结构与算法之二叉树广度遍历、深度遍历总结
什么是树,它是和链表一样都是一种抽象数据类型(ADT),包括数据结构和对数据的操作. 树是一种二维平面的数据结构结构,它也是由节点组成的,只是它的后继节点不止一个,而链表的后继节点只有一个. 树具有以 ...
- 【数据结构C语言】二叉树的遍历
//实验4 二叉树的遍历 上机实验 /*本实验函数包括1.先序遍历建立二叉树(有无返回值的函数)2.先序遍历递归算法3.中序遍历递归算法4.后序遍历递归算法5.计算深度6.计算结点个数,叶子结点数 7 ...
- python 数据结构 树 dev get items_python数据结构之树(二叉树的遍历)
'''树的构造 1.递归实现先序遍历.中序遍历.后序遍历 2.堆栈实现先序遍历.中序遍历.后序遍历 3.队列实现层次遍历''' #节点类 classNode(object):__slots__ = ' ...
- 【数据结构与算法】二叉树深度遍历
leetcode:力扣本题链接 leetcode所有深度遍历链接 !!!后文有动画演示一定要结合动画理解!!! 遍历顺序取决于中间节点所在的位置,假如中间节点在最后,那么就是后序遍历. 在非递归算法中 ...
- 二叉树的遍历(c语言数据结构实验报告三)
二叉树的遍历 一.实验目的或任务 二.实验教学基本要求 三.实验教学的内容或要求 1. 编写函数,输入字符序列,建立二叉树的二叉链表 2. 编写函数,实现二叉树的中序递归遍历算法. 3. 编写函数,实 ...
- PTA数据结构与算法题目集 6-9 二叉树的遍历
PTA数据结构与算法题目集(中文) 6-9 二叉树的遍历 void InorderTraversal( BinTree BT ){if(BT==NULL)return;if(BT->Left){ ...
- 【数据结构基础复习】二叉树的非递归遍历(二)
一.绪论 上一章中,我们粗略的复习了二叉树的遍历,不过是采用递归的方式遍历的.扩展来说,二叉树的遍历是可以推广到任何树结构的.但是,这里要强调一下,任何递归方法可以解决的问题都能用非递归的方法去实现. ...
- 数据结构笔记(二十一)--二叉树的遍历
二叉树的遍历 一.先序遍历 二.中序遍历 三.后序遍历
最新文章
- maven项目密码md5加密_加密Spring Boot中的application.properties
- 数数正方形(ACM/ICPC World Finals)
- python空值填充为固定值_Python基础:numpy中空值怎样设置
- python图片-利用python进行识别相似图片(一)
- Linux C:文件描述符、IO重定向、恢复标准输入输出
- Text determination debug
- jvm(6)-java类文件结构(字节码文件)
- 计算机操作系统(12):计算机工作原理
- 新浪云python示例_Python Web框架Flask中使用新浪SAE云存储实例
- pandas 自定义groupby的函数
- django创建新的项目、App与基本配置
- 传西门子中国运营中近一半业务涉及行贿
- 如何删除C++容器中的值
- Java对象toString()方法
- poj 2741 Colored Cubes(dfs暴力枚举)
- 前端根据银行卡号或银行的简码动态显示logo图标
- WIN7运行命令大全
- 如何制作关于pos.txt序列的文件
- 无法在此iPhone上激活Touch ID,怎么解决?
- Android Q notification创建发送流程-framework篇
热门文章
- android 模糊drawable,Android ShapeDrawable笔画模糊
- python sum函数导入list_sum求和函数怎么在Python中使用
- 服务越好收入越高,300万快递小哥有了终身成长体系
- 2019清洁行业深度报告:解读全球TOP3清洁设备制造商最新业绩和新技术趋势
- Linux 释放socket资源,LwIP使用select,close socket资源释放不完全问题
- PC企业微信hook,获取个人二维码
- 如何写软件测试的归档报告?
- 2022年蓝牙耳机哪款好?公认音质最好的蓝牙耳机
- hpp头文件与h头文件的区别
- 知道 Redis-Cluster 么?说说其中可能不可用的情况