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

输入格式:
输入第一行给出一个正整数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
#include
#include
#include
#include
using namespace std;
struct tree
{
int data;
struct tree left,right;
};
int n;
int midt[33];//中序序列
int pret[33];//先序序列
//递归建树,len是树的总结点树,a是对树的先序遍历,b是对树的中序遍历结果,返回值应该是树的根节点
struct tree create(int len,int a[],int b[])
{
if(len == 0) return NULL;
int i;
struct tree root;
root = new tree;//申请存储空间
root->data = a[0];//树的根是先序遍历的第一项和后序遍历的最后一项
for(i = 0; i < len; i++)//记录本节点,左子树的节点数目
if(a[0] == b[i])
break;
root->left = create(i,a+1,b);//i是左子树的数目,a+1是左子树的根节点,由于b是中序遍历的数组,是从左子树开始移动的,所以不需要移动
root->right = create(len-i-1,a+i+1,b+i+1);//len-i-1是总结点数-左子树结点数-根节点,a+i+1是右子树的根节点,b是中序遍历的结果,b的作用是标识左右子树的数目,故,在计算右子树的时候,应该滤过左子树和根
return root;
};
//遍历二叉树的方法有两种,bfs和dfs,这里采用bfs层序遍历二叉树
void bfs(struct tree root)
{
queue<struct tree
> q;
bool flag = true;
q.push(root);
while(!q.empty())
{
struct tree* x = q.front();
if(flag)
{
printf("%d",x->data);
flag = false;
}
else
printf(" %d",x->data);
q.pop();
if(x->right) q.push(x->right);//如果x有右子树,就将右子树的根节点入队
if(x->left) q.push(x->left);
//镜像输出就是简单的调换左右子树的输出顺序
}
printf("\n");
return;
}
int main()
{
struct tree * root;
scanf("%d",&n);
for(int i = 0; i < n; i++)
scanf("%d",&midt[i]);
for(int i = 0; i < n; i++)
scanf("%d",&pret[i]);
root = create(n,pret,midt);
bfs(root);
return 0;
}

利用前中,后中建立二叉搜索树和二叉树的镜像翻转相关推荐

  1. 中序遍历解决二叉搜索树问题

    中序遍历解决二叉搜索树问题 Python3 树 深度优先搜索 通过中序遍历二叉搜索树得到的关键码序列是一个递增序列. 这是二叉搜索树的一个重要性质,巧妙利用这一性质可以解决一系列二叉搜索树问题. 本系 ...

  2. 判断两棵树是否相等与使用二叉链表法建立二叉搜索树

    //判断两个二叉树是否相等 //提问如果两个二叉树的前序遍历相等,能否说明,这两个树相等? //答案是否定的,只有这两个树的 A前序=B前序,A中序=B中序才可以. BOOL isEqualTree( ...

  3. 如何建立二叉搜索树 http://jingyan.baidu.com/article/c910274bfb701ecd361d2deb.html

    怎么建立二叉搜索树 | 浏览:520 | 更新:2014-11-07 10:39 1 2 3 4 5 6 分步阅读 一键约师傅 百度师傅百度师傅,专治各种手机.电脑问题 二叉搜索树不同于一般的二叉树, ...

  4. 二叉搜索树(二叉树进阶)

    文章目录 二叉搜索树的概念 二叉搜索树的实现 二叉搜索树的节点 构造函数 拷贝构造函数 赋值运算符重载 析构函数 插入函数 非递归实现 递归实现 删除函数 非递归实现 递归实现 查找函数 非递归实现 ...

  5. PAT甲级1099 Build A Binary Search Tree (30分):[C++题解]建立二叉搜索树、dfs和bfs

    文章目录 题目分析 题目链接 题目分析 题意重述:给定一棵二叉树的结构,和待填的数值,请将数据填到二叉树中的结点中,使之满足二叉搜索树的性质. 然后按照层序遍历输出数值. 分析: 本题分两步. 第一步 ...

  6. 1099 Build A Binary Search Tree (30 分)【难度: 一般 / 知识点: 建立二叉搜索树】

    https://pintia.cn/problem-sets/994805342720868352/problems/994805367987355648 首先: 要知道二叉搜索树的中序遍历是有序的 ...

  7. pta 是否完全二叉搜索树_二叉树:构造一棵搜索树

    给「代码随想录」一个星标吧! ❝ 构造二叉搜索树,一不小心就平衡了 ❞ 108.将有序数组转换为二叉搜索树 将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树. 本题中,一个高度平衡二叉树是指 ...

  8. 力扣算法题—095不同的二叉搜索树【二叉树】

    给定一个整数 n,生成所有由 1 ... n 为节点所组成的二叉搜索树. 示例: 输入: 3 输出: [[1,null,3,2],[3,2,null,1],[3,1,null,null,2],[2,1 ...

  9. 【学透二叉树-二叉搜索树(二叉树)的最近公共祖先】

    示例: 代码实现: class Solution {public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q ...

  10. 树结构练习——排序二叉树的中序遍历(二叉搜索树)

    树结构练习--排序二叉树的中序遍历 Time Limit: 1000MS Memory limit: 65536K 题目描述 在树结构中,有一种特殊的二叉树叫做排序二叉树,直观的理解就是--(1).每 ...

最新文章

  1. 自然语言处理(NLP)之词义消歧(WSD)的简介与实现
  2. Oracle Parallel模式
  3. 视频图像处理基础知识4(视频分辨率参考 行频 隔行扫描 逐行扫描)【转】
  4. [论文阅读] (04) 人工智能真的安全吗?浙大团队外滩大会分享AI对抗样本技术
  5. 1130:找第一个只出现一次的字符
  6. 屏幕旋转后_网易哒哒H5又又叒刷屏了,TCL·XESS 旋转智屏竟然是一大亮点
  7. matlab连通区边界_Matlab图像处理学习笔记(一):二值化、开操作、连通区域提取、重心、ROI...
  8. puppet报告系统 dashboard
  9. 用CSS编写登陆页面(含源代码)
  10. 硬盘分区调整:分区助手专业版易我分区大师专业版软件下载
  11. [转贴]杨式太极拳八十五式通释—2—王志远
  12. 银河帝国----迈向基地
  13. [汇编] 汇编语言实现简易文本编辑器(光标移动、上卷和退格删除)
  14. 正则表达式,密码规则
  15. android高德定位sdk,android ------ 实现高德定位并获取相应信息 ( 最新版高德SDK 和 Android SDK版本)...
  16. runtime suspend
  17. 如何用在自己的网页中嵌入腾讯视频网页播放器播放一些文件
  18. Kubernetes Pod 所需要掌握的一切
  19. cpu超线程优缺点_cpu看起来很高级的超线程到底对你有什么用?
  20. 这绝对是你见过的最全深度学习服务器管理配置手册,学不会你打我

热门文章

  1. mysql node 可视化_使用Prometheus进行Substrate节点可视化监控
  2. 拓端tecdat|使用Python中Keras的LSTM递归神经网络进行时间序列预测
  3. (11)数据分析-TableOne工具
  4. 用oracle的sqlload导入文件到数据库
  5. css基础知识汇总4
  6. Java从入门到精通 第4章 常量与变量
  7. fcbf特征选择python_全自动机器学习:自动特征筛选(B)R语言自动特征工程实现...
  8. python中的__all__
  9. docker如何进入后台容器
  10. pandas获取索引行数据