博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
九度 题目1523:从上往下打印二叉树 题目1521:二叉树的镜像
阅读量:6793 次
发布时间:2019-06-26

本文共 3277 字,大约阅读时间需要 10 分钟。

题目1523:从上往下打印二叉树

题目描述:

从上往下打印出二叉树的每个节点,同层节点从左至右打印。

 

输入:

输入可能包含多个测试样例,输入以EOF结束。

对于每个测试案例,输入的第一行一个整数n(1<=n<=1000, :n代表将要输入的二叉树元素的个数(节点从1开始编号)。接下来一行有n个数字,代表第i个二叉树节点的元素的值。接下来有n行,每行有一个字母Ci。
Ci=’d’表示第i个节点有两子孩子,紧接着是左孩子编号和右孩子编号。
Ci=’l’表示第i个节点有一个左孩子,紧接着是左孩子的编号。
Ci=’r’表示第i个节点有一个右孩子,紧接着是右孩子的编号。
Ci=’z’表示第i个节点没有子孩子。

 

输出:

对应每个测试案例,

按照从上之下,从左至右打印出二叉树节点的值。

 

样例输入:
78 6 5 7 10 9 11d 2 5d 3 4zzd 6 7zz
样例输出:
8 6 10 5 7 9 11 二叉树的遍历:  广搜 ,特别适合考研看看。 先序,深搜。我觉得还是要注重基础,这些东西还是有用的。
#include 
#include
#include
#include
#include
#include
#include
#include
#include
#define Max(a,b) ((a)>(b)?(a):(b))#define Min(a,b) ((a)<(b)?(a):(b))using namespace std ;const int size=1008 ;struct Me{ struct Node{ int left ; int right ; }; Node node[size]; int N ; int turn[size] ; vector
ans ; Me(){} Me(int n):N(n){} void make_grap(){ char str[2] ; for(int i=1;i<=N;i++){ scanf("%d",&turn[i]) ; node[i].left=node[i].right=0 ; } for(int i=1;i<=N;i++){ scanf("%s",str) ; if(str[0]=='d') scanf("%d%d",&node[i].left,&node[i].right) ; else if(str[0]=='l') scanf("%d",&node[i].left) ; else if(str[0]=='r') scanf("%d",&node[i].right) ; } } void bfs(){ queue
que ; que.push(1) ; while(!que.empty()){ int now=que.front() ; que.pop() ; ans.push_back(turn[now]) ; if(node[now].left) que.push(node[now].left) ; if(node[now].right) que.push(node[now].right) ; } } void gao_qi(){ make_grap() ; ans.clear() ; bfs() ; printf("%d",ans[0]) ; for(int i=1;i

题目1521:二叉树的镜像

时间限制:1 秒

题目描述:

输入一个二叉树,输出其镜像。

 

输入:

输入可能包含多个测试样例,输入以EOF结束。

对于每个测试案例,输入的第一行为一个整数n(0<=n<=1000,n代表将要输入的二叉树节点的个数(节点从1开始编号)。接下来一行有n个数字,代表第i个二叉树节点的元素的值。接下来有n行,每行有一个字母Ci。
Ci=’d’表示第i个节点有两子孩子,紧接着是左孩子编号和右孩子编号。
Ci=’l’表示第i个节点有一个左孩子,紧接着是左孩子的编号。
Ci=’r’表示第i个节点有一个右孩子,紧接着是右孩子的编号。
Ci=’z’表示第i个节点没有子孩子。

 

输出:

对应每个测试案例,

按照前序输出其孩子节点的元素值。
若为空输出NULL。

 

样例输入:
78 6 10 5 7 9 11d 2 3d 4 5d 6 7zzzz
样例输出:
8 10 11 9 6 7 5
#include 
#include
#include
#include
#include
#include
#include
#include
#include
#define Max(a,b) ((a)>(b)?(a):(b))#define Min(a,b) ((a)<(b)?(a):(b))using namespace std ;const int size=1008;struct Me{ int N ; int turn[size] ; vector
ans ; struct Node{ int left ; int right ; }node[size]; Me(){} Me(int n):N(n){} void make_grap(){ char str[2] ; int x , y ; for(int i=1;i<=N;i++) scanf("%d",&turn[i]) ; for(int i=1;i<=N;i++){ scanf("%s",str) ; if(str[0]=='d'){ scanf("%d%d",&x,&y) ; node[i].left=y ; node[i].right=x ; } else if(str[0]=='l'){ scanf("%d",&x) ; node[i].right=x ; node[i].left=0 ; } else if(str[0]=='r'){ scanf("%d",&x) ; node[i].left=x ; node[i].right=0 ; } else node[i].left=node[i].right=0 ; } } void dfs(int now){ // puts("--") ; ans.push_back(turn[now]) ; if(node[now].left) dfs(node[now].left) ; if(node[now].right) dfs(node[now].right) ; } void gao_qi(){ make_grap() ; ans.clear() ; dfs(1) ; printf("%d",ans[0]) ; for(int i=1;i
>n){ Me me(n) ; me.gao_qi() ; } return 0 ;}

 

转载于:https://www.cnblogs.com/liyangtianmen/p/3252215.html

你可能感兴趣的文章
《树莓派开发实战(第2版)》——1.8 使用复合视频显示器/TV
查看>>
编码之道:取个好名字很重要
查看>>
《树莓派开发实战(第2版)》——1.5 通过NOOBS刷写microSD卡
查看>>
《Python Cookbook(第3版)中文版》——1.7 让字典保持有序
查看>>
在 Linux 中设置 sudo 的十条 sudoers 实用配置
查看>>
Linux 有问必答:如何在 Linux 中永久修改 USB 设备权限
查看>>
《第三方JavaScript编程》——7.2 跨站脚本
查看>>
《师兄教你找工作——100场面试 20个offer背后的求职秘密》一导读
查看>>
为PetaPoco添加Fill方法
查看>>
哈哈,找到一种方式来简单模拟EXTJS中与服务器的AJAX交互啦。
查看>>
[WinForm]DataGridView列头右键菜单
查看>>
swing中定时启动的实现
查看>>
Spring IO Platform
查看>>
Hbase协处理器coprocessor
查看>>
json,serialize,msgpack比较
查看>>
javaweb异常提示信息统一处理(使用springmvc,附源码)
查看>>
Java同步块
查看>>
关于java字节码框架ASM的学习
查看>>
深入浅出: Java回调机制(异步)
查看>>
Fork/Join框架(六)取消任务
查看>>