106. Construct Binary Tree from Inorder and Postorder Traversal

来源:互联网 发布:云考勤软件 编辑:程序博客网 时间:2024/05/22 03:35

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

class Solution {public:    TreeNode* buildTree(vector<int>& inorder, vector<int>& postorder)     {        return dfs(inorder,postorder,0,postorder.size()-1,postorder.size());    }    TreeNode* dfs(vector<int>& inorder, vector<int>& postorder,int inpos,int postpos,int length)    {        if(length==0)            return NULL;        TreeNode* root=new TreeNode(postorder[postpos]);        int i;        for(i=inpos;i<inpos+length;i++)        {            if(inorder[i]==postorder[postpos])                break;        }        int leftlength=i-inpos;        int rightlength=length-leftlength-1;        root->left=dfs(inorder,postorder,inpos,postpos-rightlength-1,leftlength);        root->right=dfs(inorder,postorder,inpos+leftlength+1,postpos-1,rightlength);        return root;    }};
0 0