/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode() : val(0), left(nullptr), right(nullptr) {}
* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
* };
*/
class Solution {
public:
TreeNode* buildTree(vector<int>& inorder, vector<int>& postorder) {
if(postorder.size() == 0) return nullptr;
int rootvalue = postorder[postorder.size() - 1];
TreeNode* root = new TreeNode(rootvalue);
if(postorder.size() == 0) return root;
int index;
for(index = 0; index < inorder.size(); index++) {
if(inorder[index] == rootvalue) break;
}
vector<int> inorder_left(inorder.begin(), inorder.begin() + index);
vector<int> inorder_right(inorder.begin() + index + 1, inorder.end());
vector<int> postorder_left(postorder.begin(), postorder.begin() + index);
vector<int> postorder_right(postorder.begin() + index, postorder.end() - 1);
root->left = buildTree(inorder_left, postorder_left);
root->right = buildTree(inorder_right, postorder_right);
return root;
}
};
力扣106. 从中序与后序遍历序列构造二叉树
最新推荐文章于 2025-11-25 12:02:55 发布
660

被折叠的 条评论
为什么被折叠?



