lintcode-中序遍历和后序遍历树构造二叉树-72

来源:互联网 发布:军人网络保密准则 编辑:程序博客网 时间:2024/06/05 21:14
/** * Definition of TreeNode: * class TreeNode { * public: *     int val; *     TreeNode *left, *right; *     TreeNode(int val) { *         this->val = val; *         this->left = this->right = NULL; *     } * } */class Solution {public:    TreeNode *buildTree(vector<int> &post,vector<int> &in,int ps,int pe,int is,int ie){        int record=post[pe];        TreeNode *root= new TreeNode(record);        if(is==ie)            return root;        int i;        for(i=is;i<=ie;++i)            if(in[i]==record)                break;        if(is<=i-1)    //存在左子树            root->left =buildTree(post,in,ps,ps+i-is-1,is,i-1);        if(i+1<=ie)    //存在右子树            root->right=buildTree(post,in,ps+i-is,pe-1,i+1,ie);        return root;    }    TreeNode *buildTree(vector<int> &inorder, vector<int> &postorder) {            if(inorder.empty()&&postorder.empty())                return nullptr;            if(inorder.size()!=postorder.size())                return nullptr;            return buildTree(postorder,inorder,0,postorder.size()-1,0,inorder.size()-1);    }};

0 0