TreeNode *construct(int preStart, int preEnd, int inStart, int inEnd){ if (preStart > preEnd || inStart > inEnd) returnnullptr; auto root = new TreeNode(preorder[preStart]); int index = 0; for (int i = inStart; i <= inEnd; ++i) { if (inorder[i] == preorder[preStart]) { index = i; break; } } root->left = construct(preStart + 1, preStart + index - inStart, inStart, index - 1); root->right = construct(preStart + index - inStart + 1, preEnd, index + 1, inEnd); return root; }