题目描述

操作给定的二叉树,将其变换为源二叉树的镜像。

输入描述:

二叉树的镜像定义:源二叉树 8/  \6   10/ \  / \
  5  7 9 11镜像二叉树8/  \10   6/ \  / \11 9 7  5
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <vector>
#include <algorithm>
using namespace std;struct TreeNode
{int val;struct TreeNode *left;struct TreeNode *right;TreeNode(int x):val(x),left(NULL),right(NULL){}
};class Solution
{
public:void Mirror(TreeNode *pRoot){if(pRoot==NULL)return ;TreeNode *tmpNode;if(pRoot->left||pRoot->right){tmpNode=pRoot->left;pRoot->left=pRoot->right;pRoot->right=tmpNode;if(pRoot->left){Mirror(pRoot->left);}if(pRoot->right){Mirror(pRoot->right);}}}TreeNode* ConstructT(int *preorder,int *inorder,int len){TreeNode* pRoot = (TreeNode*)malloc(sizeof(TreeNode));int index =0;while(inorder[index]!=preorder[0]&&index<len){index++;}if(index==len){return NULL;}pRoot->val=preorder[0];pRoot->left=ConstructT(preorder+1,inorder,index);pRoot->right=ConstructT(preorder+index+1,inorder+index+1,len-index);return pRoot;}void PrintPreorder(TreeNode *pRoot){if(pRoot){cout<<pRoot->val;PrintPreorder(pRoot->left);PrintPreorder(pRoot->right);}}
};int main()
{Solution s;TreeNode* pRoot;int preorder[]={8,6,5,7,10,9,11};int inorder[]={5,6,7,8,9,10,11};int len=7;pRoot=s.ConstructT(preorder,inorder,len);s.PrintPreorder(pRoot);s.Mirrior(pRoot);s.PrintPreorder(pRoot);return 0;
}

    

转载于:https://www.cnblogs.com/dshn/p/9014424.html

二叉树的镜像(数组,前后 遍历重建二叉树)相关推荐

  1. 二叉树 | 根据前序中序遍历重建二叉树

    Thinking 如果给你一颗二叉树的前序序列和中序序列,让你输出它的后序序列,你会怎么做呢? 也许很多同学能够很快的在纸上将一颗简单的二叉树画出来,但如果真正让你将自己的思路转换为算法,你会去怎样实 ...

  2. 根据二叉树的前序遍历和中序遍历重建二叉树

    题目描述 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字.例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7, ...

  3. 二叉树(14)----由前序遍历和中序遍历重建二叉树,递归方式

    相关链接: 链表总结----链表面试题合集 二叉树----二叉树面试题合集 1.二叉树定义 typedef struct BTreeNodeElement_t_ {void *data; } BTre ...

  4. 根据二叉树前序遍历和中序遍历重建二叉树

    剑指 Offer 07. 重建二叉树 输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字. 例如,给出 前序遍历 preorder = [3, ...

  5. 二叉树的建立与遍历_51、二叉树遍历-重建二叉树JZ4

    题目描述 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字.例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7, ...

  6. 前序遍历+中序遍历重建二叉树

    文章目录 题目 AC代码 题目 本题链接:剑指 Offer 07. 重建二叉树 注:链接题目仅代表和本题大体相似 因为是考研笔试,本题代码以C语言去写 AC代码 代码解释:本题要求就是给定两个序列:分 ...

  7. C/C++面试题—重建二叉树【前序 + 中序- 重建二叉树 和 后序 + 中序 - 重建二叉树】

    题目介绍 题目:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字. 例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{ ...

  8. 103. 二叉树的锯齿形层次遍历/102. 二叉树的层序遍历

    2020-05-24 1.题目描述 二叉树的锯齿形层次遍历 2.题解 对于层次遍历而言,就是广度优先,由于题目要求奇数层逆序,我们可以 1)使用双端队列,奇偶性不同,则出入队列方式不同. 2)对于偶数 ...

  9. 根据中序、前序遍历重建二叉树

    文章目录 题目 递归 思路 细节 易错 代码 复杂度分析 迭代 思路 细节 易错 代码 复杂度分析 题目 输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树.假设输入的前序遍历和中序遍历的结果中都 ...

最新文章

  1. oracle和mysql文件怎么打开_Oracle vs Mysql--架构、sql查询执行流程及SQL解析顺序区别说明-sql文件怎么打开...
  2. 02-linux安装nodejs
  3. mysql事件类型_MySQL binlog中的事件类型
  4. Dynamics CRM 2015/2016 Web API:Unbound Custom Action 和 Bound Custom Action
  5. 网易编程题——牛牛的闹钟
  6. oracle所有自带系统表,oracle常用系统表
  7. 2825 codevs危险的组合(递推)
  8. 1 About This Guide
  9. CSDN博客索引-2
  10. linux查看操作系统版本的命令
  11. 0321 复利计算—贷款
  12. 全球及中国光学空间光调制器(SLM)行业研究及十四五规划分析报告
  13. 跃居超导和离子阱的量子计算黑马,可编程可扩展的光量子硬件
  14. 3.2 Java编解码场景及实现
  15. 全新版大学英语综合教程4课后答案
  16. mysql sql date_SQL Date
  17. 开源中国 2014 最受关注开源软件排行榜 TOP 50
  18. Linux 内存相关问题汇总
  19. 利用python实现非参数方法(拟合优度检验)
  20. 进去springstrap显示无响应_勉强算是比较详细的游戏显示器推荐

热门文章

  1. **使用 Git Hook 实现网站的自动部署
  2. mysql 相关命令
  3. 关于PHP.ini文件的设定
  4. SQL Server开发人员应聘常被问的问题妙解汇总
  5. 导入语句 python_Python导入语句说明
  6. java out of range_关于Parameter index out of range求解决办法
  7. Excel VBA 教程
  8. 11月18日珠三角城市人口迁徙可视化(和弦图)
  9. stylus使用文档总结:内置方法+参数+条件+迭代+导入+继承
  10. Ansible源码解析 Inventory组概念