题目描述

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

/*** Definition for binary tree* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode(int x) : val(x), left(NULL), right(NULL) {}* };*/
class Solution {
public:TreeNode* reConstructBinaryTree(vector<int> pre,vector<int> vin) {if(pre.empty()||vin.empty())return NULL;TreeNode*  root=reConstructCore(pre,vin);return root;}TreeNode* reConstructCore(vector<int> pre,vector<int> vin) {if(pre.empty())return NULL;vector<int> preLeft,preRight,vinLeft,vinRight;int rootValue=pre[0];TreeNode* root=new TreeNode(rootValue);int len=pre.size();int index=0;for(int i=0;i<len;i++){if(vin[i]==rootValue){index=i;break;}}for(int j=0;j<index;j++){preLeft.push_back(pre[j+1]);vinLeft.push_back(vin[j]);}for(int j=index+1;j<len;j++){preRight.push_back(pre[j]);vinRight.push_back(vin[j]);                }root->left=reConstructCore(preLeft,vinLeft);root->right=reConstructCore(preRight,vinRight);   return root;}
}; 

剑指offer面试题[6]-重建二叉树相关推荐

  1. 剑指offer面试题6 重建二叉树(java)

    注:(1)java中树的构建 (2)构建子树时可以直接利用Arrays.copyOfRange(preorder, from, to),这个方法是左开右闭的 1 package com.xsf.Sor ...

  2. 剑指Offer - 面试题7. 重建二叉树(递归)

    1. 题目 输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字. 例如,给出前序遍历 preorder = [3,9,20,15,7] 中序遍 ...

  3. 剑指offer面试题07. 重建二叉树(递归)(切片)

    题目描述 输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字. 思路 详见链接 代码 #class TreeNode: # def __ini ...

  4. 剑指offer——面试题58:二叉树的下一个结点

    剑指offer--面试题58:二叉树的下一个结点 这个题要认真分析一下... Solution1: 自己想出来的破算法 /* struct TreeLinkNode {int val;struct T ...

  5. 剑指offer——面试题39:二叉树的深度

    剑指offer--面试题39:二叉树的深度 20180906整理 Solution1: 再本题中树的定义:若二叉树只有一个根节点,则此二叉树的深度为1. 迭代法,哈哈哈 /* struct TreeN ...

  6. 【重点】剑指offer——面试题25:二叉树中和为某一值的路径

    剑指offer--面试题25:二叉树中和为某一值的路径 参考网址:https://www.nowcoder.com/profile/5488508/codeBookDetail?submissionI ...

  7. 【递归】剑指offer——面试题19:二叉树的镜像

    剑指offer--面试题19:二叉树的镜像 Solution1: 递归解法,牢记! 根结点为空的情况容易漏,注意! /* struct TreeNode {int val;struct TreeNod ...

  8. 剑指offer_面试题6_重建二叉树(分解步骤,逐个击破)

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

  9. 剑指offer第7题 重建二叉树

    前言 该系列文章为本人刷leetcode的记录,主要旨在分享刷题的思路及算法解析(尽可能的一题多解),另方便自己日后查阅回顾.代码的实现语言是python和go. 想进大厂免不了刷题,一起加油吧,小伙 ...

最新文章

  1. WCF入门(一)——简单的示例
  2. UWP 手绘视频创作工具技术分享系列 - 手绘视频导出
  3. 关于Linux vi命令 vi命令一览表
  4. 怎样编译libdb_比特币编译(Ubuntu 16.04)
  5. MATLAB对矩阵中元素的访问
  6. 5、URLConnection(2)
  7. 安装chrome插件
  8. JSP页面添加播放视频功能
  9. 自学python买什么书比较好-python入门学习哪个书比较好(python视频教程知乎)
  10. dfmea文件_DFMEA范本.doc
  11. Linux开发板-串口连接成功后界面空白问题
  12. c语言rank函数使用实例,rank函数实例(1)
  13. appcan mysql_AppCan的图片、文件操作、上传、下载操作 From Ken
  14. C# Delegate引介
  15. 这些业务,正在帮助百度跳出搜索框
  16. kindle如何设置不闪屏_疑问解答 | Kindle翻页为什么闪屏?
  17. 百城百店 宝瓷林.北京SKP商场品牌店开业
  18. quadro显卡好在哪
  19. W3C标准英文文献翻译方案
  20. hdu 3397 线段树

热门文章

  1. Ubuntu上通过 RVM 安装 多版本 Ruby/Rails
  2. 1018. 可被 5 整除的二进制前缀
  3. eclipse 集成svn客户端_TortoiseSVN及Eclipse的svn插件安装使用
  4. 【免费毕设】asp.net多功能聊天软件的设计与开发(源代码+lunwen)
  5. ssm开放式教学管理系统答辩PPT模板
  6. 套壳python_“完全自主设计、开发和实现”的编程语言,被指是Python的套壳产品?...
  7. win10下安装Ubuntu18.4双系统(适合小白)
  8. QT不同线程间signal-slot机制的值传递
  9. 三菱FX 系列PLC 编程通信协议总览
  10. ORACLE RMAN增量备份经典理解