7-11 玩转二叉树 —— 程序设计天梯赛

简介: 给定一棵二叉树的中序遍历和前序遍历,请你先将树做个镜面反转,再输出反转后的层序遍历的序列。所谓镜面反转,是指将所有非叶结点的左右孩子对换。这里假设键值都是互不相等的正整数。

给定一棵二叉树的中序遍历和前序遍历,请你先将树做个镜面反转,再输出反转后的层序遍历的序列。所谓镜面反转,是指将所有非叶结点的左右孩子对换。这里假设键值都是互不相等的正整数。


输入格式:


输入第一行给出一个正整数N(≤30),是二叉树中结点的个数。第二行给出其中序遍历序列。第三行给出其前序遍历序列。数字间以空格分隔。


输出格式:


在一行中输出该树反转后的层序遍历的序列。数字间以1个空格分隔,行首尾不得有多余空格。


输入样例:


7
1 2 3 4 5 6 7
4 1 3 2 6 5 7


输出样例:


4 6 1 7 5 3 2

思路:

要了解二叉树相关知识,两个遍历要搞清楚 ,

通过两个排序的结果去还原二叉树(使用队列),

之后进行镜像并且输出即可。

代码:

#include <iostream>
using namespace std ;
#include <algorithm>
#include <cstring>
#include <cstdio>
#include <map>
#include <string>
#include <math.h>
#include <queue>
int N, s = 0 ;
int Q_ian[100], Z_hong[100] ;
int a[100000], arr[100000] ;
void Tree_cuna(int *qian, int *zhong, int n, int ind)
{
  if(n == 0) return ; //长度为0 返回
  int L = 0;
  while(qian[0] != zhong[L])  L++ ;
  a[ind] = qian[0] ;
  Tree_cuna(qian+1, zhong, L, ind*2) ;
  Tree_cuna(qian+L+1, zhong+L+1, n-L-1, ind*2+1) ;
}
void Mirror_Tree()
{
  queue<int> q;
  q.push(1) ;
  while(!q.empty())
  {
    int p = q.front() ;
    q.pop() ;
    arr[s++] = a[p] ;
    if(a[p*2+1] != 0) q.push(p*2+1) ;
    if(a[p*2] != 0) q.push(p*2) ;
  }
}
void test01()
{
  cin >> N ;
  for(int i=0; i<N; i++)
  {
    cin >> Z_hong[i] ;
  }
  for(int i=0; i<N; i++)
  {
    cin >> Q_ian[i] ;
  }
  Tree_cuna(Q_ian, Z_hong, N, 1) ;
  Mirror_Tree() ;
  for(int i=0; ; i++)
  {
    if(arr[i] == 0)   break ;
    if(i==0) printf("%d",arr[i]) ;
    else  printf(" %d", arr[i]) ;
  }
}
int main(void)
{
  test01() ;
  system("pause") ;
  return 0 ;
}


运行结果:2.png

相关文章
|
机器学习/深度学习 PyTorch 算法框架/工具
PyTorch基础之张量模块数据类型、基本操作、与Numpy数组的操作详解(附源码 简单全面)
PyTorch基础之张量模块数据类型、基本操作、与Numpy数组的操作详解(附源码 简单全面)
327 0
|
数据安全/隐私保护
1356:计算(calc)
1356:计算(calc)
291 0
|
弹性计算 Ubuntu Linux
2024年阿里云10秒自动完成Palworld/幻兽帕鲁游戏服务器部署教程
2024年阿里云10秒自动完成Palworld/幻兽帕鲁游戏服务器部署教程。阿里云服务器搭建帕鲁服务器游戏,服务器稳定无卡顿,先下载SteamCMD,并运行;然后下载Palserver,修改服务ini配置,启动PalServer,进入游戏服务器。今天分享阿里云创建幻兽帕鲁服务器教程。
|
数据采集 API 索引
异步任务处理系统问题之异步任务处理系统的问题如何解决
异步任务处理系统问题之异步任务处理系统的问题如何解决
388 2
|
Java
L1-4 2018我们要赢(Java)
L1-4 2018我们要赢(Java)
87 0
行为型 状态模式
行为型 状态模式
155 0
|
C语言 C++
PTA团体程序设计天梯赛-练习集: L1-050 倒数第N个字符串 ( 15分 )
给定一个完全由小写英文字母组成的字符串等差递增序列,该序列中的每个字符串的长度固定为 L,从 L 个 a 开始,以 1 为步长递增。例如当 L 为 3 时,序列为 { aaa, aab, aac, ..., aaz, aba, abb, ..., abz, ..., zzz }。这个序列的倒数第27个字符串就是 zyz。对于任意给定的 L,本题要求你给出对应序列倒数第 N 个字符串。 输入格式: 输入在一行中给出两个正整数 L(2 ≤ L ≤ 6)和 N(≤105)。 输出格式: 在一行中输出对应序列倒数第 N 个字符串。题目保证这个字符串是存在的。 输入样例:
435 0
|
人工智能 网络协议 应用服务中间件
Hexo博客SSL证书到期,该如何免费续期更换?
Hexo博客SSL证书到期,该如何免费续期更换?
|
Web App开发 存储 缓存
CleanMyMac X4.12全新版本功能介绍
CleanMyMac X2023最新版终于迎来了又4.12,重新设计了 UI 元素,华丽的现代化风格显露无余。如今的CleanMyMac,早已不是单纯的系统清理工具。在逐渐融入系统优化、软件管理、文件管理等功能后,逐渐趋近于macOS的系统管家,却又没有Windows上XX 卫士的臃肿。macOS 平台的知名系统清理应用 CleanMyMac 在经历了一段时间的beta测试后,全新设计的 CleanMyMac X 正式上线。与 CleanMyMac 3 相比,新版本的 UI 设计焕然一新,采用了完全不同的风格。
348 0

热门文章

最新文章