LeetCode---(106)Construct Binary Tree from Inorder and Postorder Traversal

来源:互联网 发布:陕师大网络教育平台 编辑:程序博客网 时间:2024/05/22 01:57

Given inorder and postorder traversal of a tree, construct the binary tree.

Note:
You may assume that duplicates do not exist in the tree.

/** * Definition for a binary tree node. * struct TreeNode { *     int val; *     TreeNode *left; *     TreeNode *right; *     TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public:    TreeNode* help(vector<int>& inorder, vector<int>& postorder,int fromi,int fromp,int length)    {        if(length==0)            return 0;        TreeNode* root=new TreeNode(postorder[fromp+length-1]);        int i;        for(i=fromi;inorder[i]!=postorder[fromp+length-1];i++)            ;        root->left=help(inorder,postorder,fromi,fromp,i-fromi);        root->right=help(inorder,postorder,i+1,fromp+i-fromi,length-1-i+fromi);        return root;    }    TreeNode* buildTree(vector<int>& inorder, vector<int>& postorder) {        return help(inorder,postorder,0,0,inorder.size());    }};


0 0