1. 题目

输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。

例如,给出前序遍历 preorder = [3,9,20,15,7]
中序遍历 inorder = [9,3,15,20,7]
返回如下的二叉树:3/ \9  20/  \15   7限制:
0 <= 节点个数 <= 5000

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/zhong-jian-er-cha-shu-lcof
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

相关题目:
LeetCode 105. 已知前序&中序 求二叉树
LeetCode 106. 已知中序&后序 求二叉树
LeetCode 1008. 先序遍历构造二叉树(已知先序,求二叉搜索树)
POJ 2255 Tree Recovery(已知前序&中序,求后序)
POJ 1577 Falling Leaves(二叉查找树)

请参考上面链接文章,不再赘述。

class Solution {unordered_map<int,int> in;
public:TreeNode* buildTree(vector<int>& preorder, vector<int>& inorder) {if(preorder.empty())return NULL;int i, n = preorder.size();for(i = 0; i < n; ++i)in[inorder[i]] = i;return build(preorder,0,n-1,inorder,0,n-1);}TreeNode* build(vector<int>& preorder, int sp, int ep, vector<int>& inorder, int si, int ei){if(ep-sp<0)return NULL;TreeNode* root = new TreeNode(preorder[sp]);int Proot = in[preorder[sp]];int leftlen = Proot-si;int rightLen = ei-Proot;root->left = build(preorder,sp+1,sp+leftlen,inorder,si,Proot-1);root->right = build(preorder,sp+leftlen+1,sp+leftlen+rightLen,inorder,Proot+1,ei);return root;}
};

剑指Offer - 面试题7. 重建二叉树(递归)相关推荐

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

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

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

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

  3. 剑指offer面试题[6]-重建二叉树

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

  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. jvm七:数组创建本质
  2. 【PC工具】推荐11个在四大使用场景中的常用工具,按场景总结常用电脑工具软件,常用办公工具软件...
  3. 跨链(5)“蚂蚁区块链”之跨链系统框架
  4. Restful HMAC认证
  5. alsa的动态库安装在哪里_linux 给运行程序指定动态库路径
  6. 无心剑中译叶芝《情愁》
  7. 最高法明确:未成年直播打赏可退还
  8. 中国科学院计算机研究生调剂,计算机网络信息中心2019年硕士研究生接收调剂信息公告...
  9. 微信推出“腾讯QQ”小程序;马化腾又要发红包;GitLab 12.5 稳定版发布| 极客头条...
  10. 特征检测和特征匹配方法汇总
  11. Oracle Sys和system用户区别
  12. java 算法之斐波那契数列
  13. python规模大小的指标是_Python 做证券指数三种策略分析 - 最高收益,最大规模,最小风险...
  14. Unity3D中隐藏与显示物体的方法
  15. [编译原理课设] 自动机的状态转换图表示
  16. 声学的一些基本知识(1)
  17. GreenDao 使用详解(入门篇)
  18. poi操作word docx文档内容替换详解
  19. 韩国NF数字功放芯片在家庭影院领域中的应用
  20. 高通全新骁龙7c/8c/8cx计算平台介绍

热门文章

  1. vue 鼠标点击事件_VBA代码解决方案第115讲:点击鼠标实现精准控制触发事件的VBA代码第二方案...
  2. Python3.10 结构化模式匹配 PEP 634
  3. C语言里if语句变量作为判断条件,C语言教学(九-上)if else判断语句
  4. Ubuntu 14.04 为root帐号开启SSH登录
  5. 二维数组数和指针操作的理解
  6. 【Python】模块学习之ConfigParser读写配置信息
  7. B. Code For 1 一个类似于线段树的东西
  8. json字符串和字典类型的相互转换(转载)
  9. DJANGO,获取当前用户名,用户组名,用户组权限
  10. Android的Fragment介绍