[leetcode] Construct Binary Tree from Inorder and Postorder Traversal

来源:互联网 发布:jsp获取mac 编辑:程序博客网 时间:2024/06/10 02:08

Construct Binary Tree from Inorder and Postorder Traversal


class Solution {public:    TreeNode *buildTreebyIndex(vector<int> &inorder,int inBegin,int inEnd,vector<int> &postorder,int postBegin,int postEnd){        if (inBegin>inEnd||postBegin>postEnd) {            return nullptr;        }        int val=postorder[postEnd];        int index;        for (int i=inBegin; i<=inEnd; i++) {//注意条件为<=            if (inorder[i]==val) {                index=i;                break;            }        }        int len=index-inBegin;        TreeNode *node=new TreeNode(val);                TreeNode *pleft=buildTreebyIndex(inorder, inBegin, index-1, postorder, postBegin, postBegin+len-1);        TreeNode *pright=buildTreebyIndex(inorder, index+1, inEnd, postorder, postBegin+len, postEnd-1);        node->left=pleft;        node->right=pright;                return node;            }        TreeNode *buildTree(vector<int> &inorder, vector<int> &postorder) {        if (inorder.size()==0) {            return nullptr;        }        return buildTreebyIndex(inorder,0,inorder.size()-1,postorder,0,postorder.size()-1);    }};


0 0
原创粉丝点击