Problem
Given preorder and inorder traversal of a tree, construct the binary tree.
Note:
You may assume that duplicates do not exist in the tree.
You may assume that duplicates do not exist in the tree.
Code
TreeNode *buildTree_r(vector<int> &preorder, vector<int> &inorder,int lp,int li,int len) { if(len == 0) return 0; int i = 0; while(inorder[li + i] != preorder[lp]) ++i; TreeNode *root = new TreeNode(preorder[lp]); root->left = buildTree_r(preorder,inorder,lp + 1,li,i); root->right = buildTree_r(preorder,inorder,lp + i + 1,li + i + 1,len - i - 1); return root; } TreeNode *buildTree(vector<int> &preorder, vector<int> &inorder) { // IMPORTANT: Please reset any member data you declared, as // the same Solution instance will be reused for each test case. int n = preorder.size(); return buildTree_r(preorder,inorder,0,0,n); }
No comments:
Post a Comment