【PAT甲级】1102 Invert a Binary Tree (25 分)(层次遍历和中序遍历)
2024-09-06 20:42:54
题意:
输入一个正整数N(<=10),接着输入0~N-1每个结点的左右儿子结点,输出这颗二叉树的反转的层次遍历和中序遍历。
AAAAAccepted code:
#define HAVE_STRUCT_TIMESPEC
#include<bits/stdc++.h>
using namespace std;
int a[][];
bool vis[];
void bfs(int r){
queue<int>q;
q.push(r);
cout<<r;
while(!q.empty()){
int now=q.front();
q.pop();
if(a[now][]!=-){
cout<<" ";
cout<<a[now][];
q.push(a[now][]);
}
if(a[now][]!=-){
cout<<" ";
cout<<a[now][];
q.push(a[now][]);
}
}
}
int flag=;
void dfs(int r){
if(a[r][]!=-)
dfs(a[r][]);
if(flag)
cout<<" ";
cout<<r;
flag=;
if(a[r][]!=-)
dfs(a[r][]);
}
int main(){
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
for(int i=;i<;++i)
a[i][]=a[i][]=-;
int n;
cin>>n;
for(int i=;i<n;++i){
char x;
cin.ignore();
cin>>x;
cin.ignore();
if(x!='-')
a[i][]=x-'',vis[x-'']=;
char y;
cin>>y;
if(y!='-')
a[i][]=y-'',vis[y-'']=;
}
int root=;
for(int i=;i<n;++i)
if(!vis[i])
root=i;
bfs(root);
cout<<"\n";
dfs(root);
return ;
}
最新文章
- SharePoint 2013 配置HTTPS(SSL)
- MySQL按照汉字的拼音排序,mysql汉字排序
- 插件svn简单使用
- mysql ERROR1405 access deny 问题解决
- 【POJ】2117 Electricity
- 一张图说清Asp.NET MVC中的 RenderPage、RenderBody、RenderSection
- NSRunLoop原理详解——不再有盲点
- JQ实现选中以后就左右移动
- 异常处理器详解 Java多线程异常处理机制 多线程中篇(四)
- Nginx禁止IP直接访问网站
- 爬虫 - 动态分页抓取 游民星空 的资讯 - bs4
- 三. html&;JavaScript&;ajax 部 分
- conda常用命令总结
- 【svn】服务器搭建和迁移
- day29(对象转xml(使用java))
- Vue CLI 3 配置兼容IE10
- 用vs2012编译cocos2dx-3.9
- Task 4.3 求环形数组的最大子数组和
- ubuntu 14.04 (desktop amd 64) 查看配置参数
- perl6 登录phpmyadmin
热门文章
- IDEA构建maven项目生成的文件详解
- VTK坐标系统及视图分割
- ANDROID开发之问题积累及解决方案(四)
- 3ds Max File Format (Part 3: The department of redundancy department; Config)
- Atcoder Beginner Contest 156E(隔板法,组合数学)
- 用html5自带表单验证 并且用ajax提交的解决方法(附例子)
- 后台 - java 数组
- ORA_12514:TNS:listener does not currently know of service requested in connect descriptor
- 【牛客小白月赛21】NC201604 Audio
- UNICODE下CString转string