lintcode- 前序遍歷和中序遍歷樹構造二叉樹-73
阿新 • • 發佈:2019-02-05
/** * 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); } };