2
* Definition for a binary tree node.7
* TreeNode() : val(0), left(nullptr), right(nullptr) {}8
* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}9
* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left),15
typedef vector<int>::iterator vecIt;17
TreeNode *buildTree(vector<int> &preorder, vector<int> &inorder, TreeNode *retNode, vecIt startIt,19
if (startIt >= endIt) return (NULL);24
rootIt = preorder.begin();26
preorder.erase(rootIt);27
retNode = new TreeNode(rootVal);28
midIt = find(startIt, endIt, rootVal);29
retNode->left = buildTree(preorder, inorder, retNode->left, startIt, midIt);30
retNode->right = buildTree(preorder, inorder, retNode->right, midIt + 1, endIt);33
TreeNode *buildTree(vector<int> &preorder, vector<int> &inorder) {36
return (buildTree(preorder, inorder, retNode, inorder.begin(), inorder.end()));