剑指Offer(4)重建二叉树
2018-01-24 15:18
344 查看
题目描述
输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。
算法:递归算法
数据结构:二叉树
编程语言:C++
输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。
算法:递归算法
数据结构:二叉树
编程语言:C++
class Solution { public: TreeNode* reConstructBinaryTree(vector<int> pre,vector<int> in) { if(pre.empty()||in.empty())//空指针判断 return nullptr; int len=in.size(); vector<int> left_in,right_in,left_pre,right_pre; TreeNode* root=new TreeNode(pre[0]); //找到中序遍历中根的位置 int gen; for(int i=0;i<len;i++) { if(pre[0]==in[i]) { gen=i; break; } } //左右字数数组插入元素 for(int i=0;i<gen;i++) { left_pre.push_back(pre[i+1]); left_in.push_back(in[i]); } for(int i=gen+1;i<len;i++) { right_pre.push_back(pre[i]); right_in.push_back(in[i]); } //递归过程 root->left=reConstructBinaryTree(left_pre,left_in); root->right=reConstructBinaryTree(right_pre,right_in); return root; } };
相关文章推荐
- 剑指Offer学习之面试题6 :重建二叉树
- 《剑指Offer》之“重建二叉树”
- 《剑指offer》-04重建二叉树
- 《剑指offer》006-重建二叉树
- 剑指offer题解C++【4】重建二叉树
- 面试题06_重建二叉树——剑指offer系列
- 《剑指offer》问题7 重建二叉树 Java实现
- (剑指offer)重建二叉树
- 《剑指offer》面试题6 重建二叉树
- 《剑指offer》重建二叉树
- ?《剑指offer》7.重建二叉树
- [置顶] 剑指offer:第6题重建二叉树
- 剑指offer—重建二叉树
- 《剑指offer》-重建二叉树
- 剑指offer: 重建二叉树
- 《剑指offer》重建二叉树
- 剑指Offer(第二版)面试题7:重建二叉树
- 理解《剑指Offer》之面试题6 重建二叉树
- 《剑指offer》根据先序序列与中序序列重建二叉树-Java
- 剑指offer--重建二叉树