【剑指offer】面试题6:重建二叉树
来源:互联网 发布:有关大数据的例子 编辑:程序博客网 时间:2024/04/30 14:51
题目描述
输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{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: struct TreeNode* reConstructBinaryTree(vector<int> pre,vector<int> in) { int len1 = pre.size(); int len2 = in.size(); if(len1!=len2||len1==0){ return NULL; } return ConstructCore(pre,in,0,len1-1,0,len2-1); }private: struct TreeNode* ConstructCore(vector<int>& pre,vector<int>& in,int startPreorder, int endPreorder, int startInorder, int endInorder){ int rootValue = pre[startPreorder]; TreeNode* proot = new TreeNode(rootValue); if(startInorder==endInorder){ if(startInorder==endInorder&&pre[startPreorder]==in[startInorder]) return proot; else return NULL; } int rootInorder = startInorder; while(rootInorder<endInorder&&in[rootInorder]!=rootValue) rootInorder++; if(rootInorder==endInorder&&in[rootInorder]!=rootValue) return NULL; int leftLength = rootInorder - startInorder; int leftPreorderEnd = startPreorder + leftLength; if(leftLength>0){ proot->left = ConstructCore(pre,in,startPreorder+1,leftPreorderEnd,startInorder,rootInorder-1); } if(leftLength<endPreorder-startPreorder){ proot->right = ConstructCore(pre,in,leftPreorderEnd+1,endPreorder,rootInorder+1,endInorder); } return proot; } };
0 0
- 《剑指Offer》面试题-重建二叉树
- 剑指offer--面试题6: 重建二叉树(树)
- 剑指offer-->面试题6 重建二叉树
- 【剑指offer】面试题6:重建二叉树
- 《剑指offer》面试题6:重建二叉树
- 剑指offer 面试题6 重建二叉树
- 剑指Offer:面试题6 重建二叉树
- 《剑指offer》面试题6:重建二叉树
- 《剑指offer》面试题6重建二叉树
- 剑指offer面试题6--重建二叉树
- 理解《剑指Offer》之面试题6 重建二叉树
- 剑指offer 面试题6 重建二叉树
- 剑指offer面试题6 重建二叉树(c)
- 剑指offer面试题6 重建二叉树(java)
- 《剑指Offer》面试题6:重建二叉树
- 剑指offer--面试题6:重建二叉树--Java实现
- 【剑指Offer学习】【面试题6 :重建二叉树】
- 《剑指Offer》学习笔记--面试题6:重建二叉树
- 一个由泛型和Auto Unbox引发的Crash
- AVPlayer 和 MPMoivePlayerController的区别
- 机器学习基石学习笔记3 VC Dimension(1)
- 解决Win10 Windows10关键错误 开始菜单和Cortana无法工作问题
- 1096. Consecutive Factors (20)
- 【剑指offer】面试题6:重建二叉树
- ipvsadm 安装配置
- win7 64位上VM虚拟机安装64位Ubuntu14.04.3
- 正则表达式匹配x相对
- 单例模式之内部静态类
- 对LCS算法及其变种的初步研究
- linux下查看网关的命令
- Android中AndroidManifest.xml uses-sdk警告
- PCI Spec阅读笔记:第一章