/**
* 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 *tra(vector<int>& inorder, vector<int>& postorder)
{
if(postorder.size() == 0) return NULL;
int rootValue = postorder[postorder.size() - 1];
TreeNode *root = new TreeNode(rootValue);
if(postorder.size()==1) return root;
int index;
for(index = 0;index < inorder.size(); index++){
if(inorder[index] == rootValue) break;
}
vector<int> leftInorder(inorder.begin(),inorder.begin() + index);
vector<int> rightIorder(inorder.begin() + index + 1,inorder.end());
postorder.resize(postorder.size() - 1);
vector<int>leftPostorder(postorder.begin(),postorder.begin() + leftInorder.size());
vector<int>rightPostorder(postorder.begin() + leftInorder.size(),postorder.end());
root ->left = tra(leftInorder,leftPostorder);
root ->right = tra(rightIorder,rightPostorder);
return root;
}
TreeNode* buildTree(vector<int>& inorder, vector<int>& postorder) {
if(inorder.size() == 0 || postorder.size() == 0) return NULL;
return tra(inorder,postorder);
}
};
力扣-106.从中序与后序列构造二叉树
最新推荐文章于 2024-10-04 14:10:29 发布
文章介绍了如何使用inorder和postorder遍历序列来递归地构建二叉树,通过`Solution`类中的`tra`函数实现树的构造。
摘要由CSDN通过智能技术生成