105. 从前序与中序遍历序列构造二叉树
思路:根据root节点,将中序vector划分成vin_left,vin_right两部分中序子序列,根据中序子序列长度,将前序vector划分成pre_left, pre_right对应的前序子序列。root->left递归生成,root->right递归。
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
TreeNode* rebuild(vector<int>& preorder,int preRight,int preLeft,vector<int>& inorder,int inoRight,int inoLeft){
if(preRight>preLeft||inoRight>inoLeft)
return nullptr;
TreeNode* root=new TreeNode(preorder[preRight]);
for(auto i=0;i<=inoLeft;++i)