Problem
Given inorder and postorder 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> &inorder, vector<int> &postorder,int lp,int li,int len) { if(len == 0) return 0; int i = 0; while(inorder[li + i] != postorder[lp + len - 1]) ++i; TreeNode *root = new TreeNode(postorder[lp + len - 1]); root->left = buildTree_r(inorder,postorder,lp,li,i); root->right = buildTree_r(inorder,postorder,lp + i,li + i + 1,len - i - 1); return root; } TreeNode *buildTree(vector<int> &inorder, vector<int> &postorder) { // IMPORTANT: Please reset any member data you declared, as // the same Solution instance will be reused for each test case. int n = postorder.size(); return buildTree_r(inorder,postorder,0,0,n); }
No comments:
Post a Comment