二叉树重建
2016-03-17 22:31
399 查看
给出先序和后续,重建二叉树
class Solution {
public:
struct TreeNode* reConstructBinaryTree(vector<int> pre,vector<int> in) {
TreeNode* ans=solve(pre,0,(int)pre.size(),in,0,(int)in.size());
return ans;
}
struct TreeNode* solve(vector<int>pre,int s,int e,vector<int>in,int ss,int ee)
{
if(s==e)
{
TreeNode * ans=NULL;
return ans;
}
TreeNode * ans=new TreeNode(pre[s]);
if(s==e-1) return ans;
int i;
for(i=ss;i<ee;i++)
if(in[i]==pre[s])
break;
int len=i-ss;
ans->left=solve(pre,s+1,s+len+1,in,ss,i);
ans->right=solve(pre,s+len+1,e,in,ss+len+1,ee);
return ans;
}
};
class Solution {
public:
struct TreeNode* reConstructBinaryTree(vector<int> pre,vector<int> in) {
TreeNode* ans=solve(pre,0,(int)pre.size(),in,0,(int)in.size());
return ans;
}
struct TreeNode* solve(vector<int>pre,int s,int e,vector<int>in,int ss,int ee)
{
if(s==e)
{
TreeNode * ans=NULL;
return ans;
}
TreeNode * ans=new TreeNode(pre[s]);
if(s==e-1) return ans;
int i;
for(i=ss;i<ee;i++)
if(in[i]==pre[s])
break;
int len=i-ss;
ans->left=solve(pre,s+1,s+len+1,in,ss,i);
ans->right=solve(pre,s+len+1,e,in,ss+len+1,ee);
return ans;
}
};
相关文章推荐
- 数组
- linux日志
- windows server git
- 设计模式C++学习笔记之四(Multition多例模式)
- 54. Spiral Matrix LeetCode
- 跳槽半年的一些想法
- 由于数组赋值超过定义的范围造成的错误
- ubuntu 14.04 mysql 主从配置
- C语言小编程之判断一个数是否是2的n次方的巧妙方法
- 设计模式之工厂方法模式及代码示例
- 类的构造函数
- angular 关于 factory、service、provider的相关用法
- DrawerLayout + Toolbar
- Hibernate中get方法和load方法的区别
- SQL Server 获取数据库表的元信息
- Java中String类的isEmpty()方法
- poj--1789 Truck History(最小生成树Prim算法)
- 北化oj 2374- A+B结果的个位数
- LeetCode 59 Spiral Matrix II
- 大数乘法(二)