您的位置:首页 > 其它

二叉树重建

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;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: