/**
* Definition for binary tree
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
TreeNode *buildTree(vector<int> &inorder, vector<int> &postorder) {
int size=inorder.size();
if(size==0){
return NULL;
}
int *in=new int[size];
int *po=new int[size];
for(int i=0;i<size;++i){
in[i]=inorder[i];
po[i]=postorder[i];
}
return rebuild(in,po,size);
}
TreeNode * rebuild(int *in,int *po,int len){
if(in==NULL||po==NULL||len==0){
return NULL;
}
int llen=0;
for(;llen<len;llen++){
if(in[llen]==po[len-1]){
break;
}
}
int rlen=len-1-llen;
TreeNode *root=new TreeNode(po[len-1]);
root->left=rebuild(in,po,llen);
root->right=rebuild(in+llen+1,po+llen,rlen);
return root;
}
};
二叉树的构建
猜你喜欢
转载自blog.csdn.net/u010325193/article/details/86190066
今日推荐
周排行