lintcode- 前序遍历和中序遍历树构造二叉树-73

来源:互联网 发布:军人网络保密准则 编辑:程序博客网 时间:2024/06/05 17:07
/** * 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> &pre,vector<int> &in,int ps,int pe,int is,int ie){        int record=pre[ps];        TreeNode *root= new TreeNode(record);        if(ps==pe)            return root;        int i;        for(i=is;i<=ie;++i)            if(in[i]==record)                break;        if(is<=i-1)                root->left =buildTree(pre,in,ps+1,ps+(i-is),is,i-1);        if(i+1<=ie)                root->right=buildTree(pre,in,ps+(i-is)+1,pe,i+1,ie);        return root;    }    TreeNode *buildTree(vector<int> &preorder, vector<int> &inorder) {             if(inorder.empty()&&preorder.empty())                return nullptr;                        if(inorder.size()!=preorder.size())                return nullptr;            return buildTree(preorder,inorder,0,preorder.size()-1,0,inorder.size()-1);    }};

0 0
原创粉丝点击