class Solution {
public:
TreeNode* _buildTree(vector<int>& inorder, vector<int>& preorder,int& prei,int begin,int end)
{
if(begin>end)
{
return nullptr;
}
TreeNode* root = new TreeNode(preorder[prei]);
int n=0;
while(prei<preorder.size())
{
if(inorder[n] == preorder[prei])
break;
n++;
}
prei++;
//[begin,n-1]n[n+1,end]
root->left = _buildTree(inorder,preorder,prei,begin,n-1);
root->right =_buildTree(inorder,preorder,prei,n+1,end);
return root;
}
TreeNode* buildTree(vector<int>& preorder, vector<int>& inorder)
{
int posti=0;
TreeNode* root = _buildTree(inorder,preorder,posti,0,inorder.size()-1);
return root;
}
};
leetcode 105. 从前序与中序遍历序列构造二叉树(代码实现)
最新推荐文章于 2024-07-25 21:13:04 发布