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-09-18 11:04:20 发布
这段代码实现了一个从给定的前序遍历和中序遍历结果构建二叉树的算法。它通过递归的方式,首先找到中序遍历中的根节点,然后分别构建左子树和右子树,最后将它们连接到根节点上。整个过程展示了如何利用递归解决二叉树问题。
摘要由CSDN通过智能技术生成