PTA L2-011 玩转二叉树 二叉树+bfs
思路:
先建树,然后按层次输出。
#include<iostream>
#include<cstring>
#include<cstdio>
#include<cstdlib>
#include<sstream>
#include<list>
#include<cmath>
#include<queue>
using namespace std;
struct node{
int index;
node *left,*right;
node()
{
index=;
left=right=NULL;
}
};
int pre[],mid[];
int n2,n;
int judge[];
node* build(node *root)//建树
{
int t=pre[n2++];
int i; for( i=;i<n;i++)
{
if(mid[i]==t)
break;
}
root=new node();
root->index=t;
judge[i]=;
if(i>&&i<n&&judge[i-]==)
root->left=build(root->left);
if(i>=&&i<n-&&judge[i+]==)
root->right=build(root->right);
return root;
} void print(node* root)
{
printf("%d ",root->index); if(root->left)
print(root->left);
if(root->right)
print(root->right);
return ;
}
int cntp=;
void bfs(node* root)//题目要求层次遍历输出
{
queue <node*> q;
q.push(root);
while(!q.empty())
{
node* a=q.front();
q.pop();
if(cntp!=)
printf(" ");
printf("%d",a->index);
cntp++; // system("pause");
if(a->right)
q.push(a->right);
if(a->left)
q.push(a->left); }
return ;
}
int main()
{ while(scanf("%d",&n)==)
{
for(int i=;i<n;i++)
scanf("%d",&mid[i]);
for(int i=;i<n;i++)
scanf("%d",&pre[i]);
memset(judge,,sizeof(judge));
n2=;
cntp=;
node* root=build(root);
//print(root);
bfs(root);
printf("\n");
}
return ;
}
PTA
PTA L2-011 玩转二叉树 二叉树+bfs的更多相关文章
- PAT L2-011 玩转二叉树(二叉树层序遍历)
给定一棵二叉树的中序遍历和前序遍历,请你先将树做个镜面反转,再输出反转后的层序遍历的序列.所谓镜面反转,是指将所有非叶结点的左右孩子对换.这里假设键值都是互不相等的正整数. 输入格式: 输入第一行给出 ...
- C++版 - 剑指offer 面试题23:从上往下打印二叉树(二叉树的层次遍历BFS) 题解
剑指offer 面试题23:从上往下打印二叉树 参与人数:4853 时间限制:1秒 空间限制:32768K 提交网址: http://www.nowcoder.com/practice/7fe2 ...
- pta l2-11(玩转二叉树)
题目链接:https://pintia.cn/problem-sets/994805046380707840/problems/994805065406070784 题意:给定二叉树的结点个数n,其前 ...
- PTA 天梯赛练习 7-11 玩转二叉树-二叉树重建
以前就思考过这个问题,但是没有深入的想过,这是一种叫二叉树重建的典型题目 如果给出中序和前序,求出后序遍历. 这道题则求的是交换儿子节点的层序遍历. 二叉树的重建应该怎么重建,首先我们知道,先根遍历, ...
- PTA 7-10 树的遍历(二叉树基础、层序遍历、STL初体验之queue)
7-10 树的遍历(25 分) 给定一棵二叉树的后序遍历和中序遍历,请你输出其层序遍历的序列.这里假设键值都是互不相等的正整数. 输入格式: 输入第一行给出一个正整数N(≤30),是二叉树中结点的个数 ...
- DS二叉树--二叉树之父子结点
题目描述 给定一颗二叉树的逻辑结构如下图,(先序遍历的结果,空树用字符‘0’表示,例如AB0C00D00),建立该二叉树的二叉链式存储结构. 编写程序输出该树的所有叶子结点和它们的父亲结点 输入 第一 ...
- DS二叉树--二叉树构建与遍历
题目描述 给定一颗二叉树的逻辑结构如下图,(先序遍历的结果,空树用字符‘0’表示,例如AB0C00D00),建立该二叉树的二叉链式存储结构,并输出该二叉树的先序遍历.中序遍历和后序遍历结果 输入 第一 ...
- DS二叉树--二叉树之数组存储
二叉树可以采用数组的方法进行存储,把数组中的数据依次自上而下,自左至右存储到二叉树结点中,一般二叉树与完全二叉树对比,比完全二叉树缺少的结点就在数组中用0来表示.,如下图所示 从上图可以看出,右边的是 ...
- javascript实现数据结构: 树和二叉树,二叉树的遍历和基本操作
树型结构是一类非常重要的非线性结构.直观地,树型结构是以分支关系定义的层次结构. 树在计算机领域中也有着广泛的应用,例如在编译程序中,用树来表示源程序的语法结构:在数据库系统中,可用树来组织信息:在分 ...
随机推荐
- 多模块项目Module must not contain source root. The root already belongs to module
多模块项目Module "*" must not contain source root *. The root already belongs to module "* ...
- Dynamics CRM - 使用 C# Plugin 调用 SQL 存储过程
有时候,在 Dynamics CRM Plugin 中通过 linq 查询数据会比较慢,可以通过采用在 C# plugin 中直接调用数据库存储过程的方式来提高效率,具体过程如下: 1.新建一个存储过 ...
- Java 程序国际化
相关类: java.util.Locale java.util.ResourceBundle 操作步骤: 可以新建一个包, 如 res , 添加 .properties 文件 在其中添加键值对 ...
- python ftp批量上传文件下载文件
# encoding:utf-8 from ftplib import FTPimport osimport sys _XFER_FILE = 'FILE'_XFER_DIR = 'DIR' clas ...
- JSP和后台交互时的乱码问题
在Servlet或者是拦截器里面添加下面的语句: request.setCharacterEncoding("utf-8"); response.setCharacterEncod ...
- 路径规划算法之Bellman-Ford算法
最近由于工作需要一直在研究Bellman-Ford算法,这也是我第一次用C++编写代码. 1.Bellman-Ford算法总结 (1)Bellman-Ford算法计算从源点(起始点)到任意一点的最短路 ...
- 自适应rem.js
用rem.js来实现自适应屏幕大小,要注意border不用rem做单位 代码如下: (function (doc, win) { //orientationchange : 判断手机是水平方向还是垂 ...
- JSON字符串与Map互转
//一.map转为json字符串 public static String map2jsonstr(Map<String,?> map){ return JSONObject.toJSON ...
- Springboot项目打包后的页面丢失问题(thymeleaf报错)
遇到的问题目前找到两种: 返回视图路径以/开头,例如 /test/hello 在thymeleaf页面中,引入的页面以/开头,例如:<footer th:replace="/index ...
- [Kubernetes]PV,PVC,StorageClass之间的关系详解
在Kubernetes中,容器化一个应用比较麻烦的地方莫过于对其"状态"的管理,而最常见的"状态",莫过于存储状态. 在[Kubernetes]深入理解Stat ...