给定两个整数数组 inorder 和 postorder ,其中 inorder 是二叉树的中序遍历, postorder 是同一棵树的后序遍历,请你构造并返回这颗 二叉树 。
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/construct-binary-tree-from-inorder-and-postorder-traversal
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
class Solution {
public:
TreeNode* buildTree(vector<int>& inorder, vector<int>& postorder) {
if(inorder.size()==0) return NULL;
TreeNode* node = new TreeNode(0);
node->val = postorder[postorder.size()-1];
if(inorder.size()==1)
return node;
int i;
for(i=0;i<inorder.size();i++)
{
if(inorder[i]==postorder[postorder.size()-1])
{
break;
}
}
vector<int> inorderleft(inorder.begin(),inorder.begin()+i);
vector<int> inorderright(inorder.begin()+i+1,inorder.end());
vector<int> porderleft(postorder.begin(),postorder.begin()+i);
vector<int> porderright(postorder.begin()+i,postorder.end()-1);
node->left = buildTree(inorderleft,porderleft);
node->right = buildTree(inorderright,porderright);
return node;
}
};