《剑指offer》重建二叉树
2015-09-14 14:00
453 查看
【 声明:版权所有,转载请标明出处,请勿用于商业用途。 联系信箱:libin493073668@sina.com】
题目链接:http://www.nowcoder.com/practice/8a19cbe657394eeaac2f6ea9b0f6fcf6?rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking
题目描述
输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{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 lenp = pre.size();
int leni = in.size();
if(lenp==0 || leni==0 || lenp!=leni)
return nullptr;*
TreeNode *root = new TreeNode(pre[0]);
int mid = find(in.begin(),in.end(),pre[0])-in.begin();
vector<int> left_pre(pre.begin()+1,pre.begin()+1+mid);
vector<int> left_in(in.begin(),in.begin()+mid);
vector<int> right_pre(pre.begin()+1+mid,pre.end());
vector<int> right_in(in.begin()+mid+1,in.end());
root->left = reConstructBinaryTree(left_pre,left_in);
root->right = reConstructBinaryTree(right_pre,right_in);
return root;
}
};
相关文章推荐
- poj 1274 The Perfect Stall【匈牙利算法模板题】
- JS正则表达式验证数字非常全
- 剑指offer:替换空格
- 使用 JavaScript 创建Cookie
- AJAX获取json
- 《剑指offer》机器人的运动范围
- js提取整数部分,移除首末空格
- css定义背景图片不显示原因
- 《剑指offer》矩阵中的路径
- 怎么用纯css改变select的样式
- jQuery.off() 函数详解
- javascript 与 flex 通信
- angular translate
- 神奇的数据建模框架JSONModel
- 《剑指offer》滑动窗口的最大值
- WebRtc libjingle_PeerConnection层(二) CreateOffer
- 百度地图Geocoding API 用法,返回json解析
- flask 如何传参数到 js中,避免& # 39等转义
- node.js在windows下的安装与配置(附sublime-text的配置)
- ArcGIS For Server10.1新特性之-服务器端打印服务及前端调用