剑指offer面试题[6]-重建二叉树
题目描述
输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{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]-重建二叉树相关推荐
- 剑指offer面试题6 重建二叉树(java)
注:(1)java中树的构建 (2)构建子树时可以直接利用Arrays.copyOfRange(preorder, from, to),这个方法是左开右闭的 1 package com.xsf.Sor ...
- 剑指Offer - 面试题7. 重建二叉树(递归)
1. 题目 输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字. 例如,给出前序遍历 preorder = [3,9,20,15,7] 中序遍 ...
- 剑指offer面试题07. 重建二叉树(递归)(切片)
题目描述 输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字. 思路 详见链接 代码 #class TreeNode: # def __ini ...
- 剑指offer——面试题58:二叉树的下一个结点
剑指offer--面试题58:二叉树的下一个结点 这个题要认真分析一下... Solution1: 自己想出来的破算法 /* struct TreeLinkNode {int val;struct T ...
- 剑指offer——面试题39:二叉树的深度
剑指offer--面试题39:二叉树的深度 20180906整理 Solution1: 再本题中树的定义:若二叉树只有一个根节点,则此二叉树的深度为1. 迭代法,哈哈哈 /* struct TreeN ...
- 【重点】剑指offer——面试题25:二叉树中和为某一值的路径
剑指offer--面试题25:二叉树中和为某一值的路径 参考网址:https://www.nowcoder.com/profile/5488508/codeBookDetail?submissionI ...
- 【递归】剑指offer——面试题19:二叉树的镜像
剑指offer--面试题19:二叉树的镜像 Solution1: 递归解法,牢记! 根结点为空的情况容易漏,注意! /* struct TreeNode {int val;struct TreeNod ...
- 剑指offer_面试题6_重建二叉树(分解步骤,逐个击破)
题目:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字. 例如:输入前序遍历 {1,2,4,7,3,5,6,8} 和中序遍历序列 {4,7 ...
- 剑指offer第7题 重建二叉树
前言 该系列文章为本人刷leetcode的记录,主要旨在分享刷题的思路及算法解析(尽可能的一题多解),另方便自己日后查阅回顾.代码的实现语言是python和go. 想进大厂免不了刷题,一起加油吧,小伙 ...
最新文章
- WCF入门(一)——简单的示例
- UWP 手绘视频创作工具技术分享系列 - 手绘视频导出
- 关于Linux vi命令 vi命令一览表
- 怎样编译libdb_比特币编译(Ubuntu 16.04)
- MATLAB对矩阵中元素的访问
- 5、URLConnection(2)
- 安装chrome插件
- JSP页面添加播放视频功能
- 自学python买什么书比较好-python入门学习哪个书比较好(python视频教程知乎)
- dfmea文件_DFMEA范本.doc
- Linux开发板-串口连接成功后界面空白问题
- c语言rank函数使用实例,rank函数实例(1)
- appcan mysql_AppCan的图片、文件操作、上传、下载操作 From Ken
- C# Delegate引介
- 这些业务,正在帮助百度跳出搜索框
- kindle如何设置不闪屏_疑问解答 | Kindle翻页为什么闪屏?
- 百城百店 宝瓷林.北京SKP商场品牌店开业
- quadro显卡好在哪
- W3C标准英文文献翻译方案
- hdu 3397 线段树
热门文章
- Ubuntu上通过 RVM 安装 多版本 Ruby/Rails
- 1018. 可被 5 整除的二进制前缀
- eclipse 集成svn客户端_TortoiseSVN及Eclipse的svn插件安装使用
- 【免费毕设】asp.net多功能聊天软件的设计与开发(源代码+lunwen)
- ssm开放式教学管理系统答辩PPT模板
- 套壳python_“完全自主设计、开发和实现”的编程语言,被指是Python的套壳产品?...
- win10下安装Ubuntu18.4双系统(适合小白)
- QT不同线程间signal-slot机制的值传递
- 三菱FX 系列PLC 编程通信协议总览
- ORACLE RMAN增量备份经典理解