Monday, November 25, 2013

LeetCode Problem : Construct Binary Tree from Inorder and Postorder Traversal

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.

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