您的位置:首页 > 其它

Construct Binary Tree from Preorder and Inorder Traversal

2013-05-09 19:48 337 查看
Given preorder and inorder traversal of a tree, construct the binary tree.

Note:

You may assume that duplicates do not exist in the tree.
根据前序遍历和中序遍历构建树。
public:
TreeNode *buildTree(vector<int> &preorder, vector<int> &inorder) {
// Start typing your C/C++ solution below
// DO NOT write int main() function

return build(preorder,inorder,0,preorder.size()-1,0,inorder.size()-1);
}

TreeNode *build(vector<int> &preorder, vector<int> &inorder,int s1,int e1,int s2,int e2)
{
if(s1 > e1 || s2 > e2) return NULL;

vector<int>::iterator it = find(inorder.begin(),inorder.end(),preorder[s1]);
int index = it - inorder.begin();

TreeNode *root = new TreeNode(preorder[s1]);
TreeNode *left = build(preorder,inorder,s1+1,s1+index - s2,s2,index-1);
TreeNode *right = build(preorder,inorder,s1+index - s2+1,e1,index+1,e2);

root->left = left;
root->right = right;
return root;
}
};


148 milli secs
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐