ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

105. 从前序与中序遍历序列构造二叉树

2026/9/21 3:45:04 拓冰建站 浏览量
105. 从前序与中序遍历序列构造二叉树

105. 从前序与中序遍历序列构造二叉树


题目链接:105. 从前序与中序遍历序列构造二叉树

代码如下:

/*** 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>& preorder, vector<int>& inorder) {return tree(preorder,0,preorder.size()-1,inorder,0,inorder.size()-1);}TreeNode* tree(vector<int>& preorder,int prel,int prer, vector<int>& inorder,int inl,int inr){if(prel>prer)return nullptr;TreeNode *root=new TreeNode(preorder[prel],nullptr,nullptr);int index = inl;while (inorder[index] != root->val)index++;int llen = index - inl;root->left = tree( preorder, prel+1, prel + llen, inorder, inl, index - 1);root->right = tree(preorder, prel +llen + 1, prer, inorder, index + 1, inr);return root;}
};