leetcode - Construct Binary Tree from Preorder and Inorder Traversal
2013-03-26 21:05 张汉生 阅读(155) 评论(0) 编辑 收藏 举报题目描述:点击此处
1 /** 2 * Definition for binary tree 3 * struct TreeNode { 4 * int val; 5 * TreeNode *left; 6 * TreeNode *right; 7 * TreeNode(int x) : val(x), left(NULL), right(NULL) {} 8 * }; 9 */ 10 class Solution { 11 public: 12 TreeNode * buildTree(vector<int>::iterator inBegin, vector<int>::iterator inEnd, 13 vector<int>::iterator preBegin, vector<int>::iterator preEnd){ 14 int val = *(preBegin); 15 TreeNode * root = new TreeNode(val); 16 vector<int>::iterator ii, jj; 17 for (ii=inBegin, jj=preBegin+1; ii!=inEnd && *ii!=val; ii++, jj++); 18 if (ii!=inBegin) 19 root->left = buildTree(inBegin, ii, preBegin+1, jj); 20 if (ii+1 != inEnd) 21 root->right = buildTree(ii+1, inEnd, jj, preEnd); 22 return root; 23 } 24 TreeNode *buildTree(vector<int> &preorder, vector<int> &inorder) { 25 // Start typing your C/C++ solution below 26 // DO NOT write int main() function 27 if (inorder.empty()) 28 return NULL; 29 return buildTree(inorder.begin(),inorder.end(),preorder.begin(), preorder.end()); 30 } 31 };