递归实现
/** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public: TreeNode *build( vector &preorder,vector &inorder,int start,int end,int start1,int end1) { if(start==end) return NULL; int i; TreeNode * tmp = new TreeNode(preorder[start]); for(i=start1; ileft=left; tmp->right=right; return tmp; } TreeNode *buildTree(vector &preorder, vector &inorder) { // Start typing your C/C++ solution below // DO NOT write int main() function return build(preorder,inorder,0,preorder.size(),0,inorder.size()); }};