您的位置:首页 > 其它

LeetCode 105. Construct Binary Tree from Preorder and Inorder Traversal

2016-05-01 01:36 375 查看
Search in inorder vector to find the next root->right, root->left index which is being used to set the border for next recursion in preorder border.

// you may assume that there is no duplicates in the tree.
buildTree(vector<int>& preorder, vector<int>& inorder, TreeNode* root, int index, int nStart, int nEnd) {
if(nStart >= nEnd) return;
int num = preorder[index];
root = new TreeNode(num);
int r = start;
while(r < nEnd && inorder[r] != num) {r++;}
if(r < nEnd) buildTree(preorder, inorder, root->left, index + 1, nStart, r);
if(nEnd > r + 1) buildTree(preorder, inorder, root->right, index + r + 1 - nStart, r + 1, nEnd);
}

TreeNode* buildTree(vector<int>& preorder, vector<int>& inorder) {
TreeNode* root = NULL;
int nSize = preorder.size();
buildTree(preorder, inorder, root, 0, 0, nSize);
return root;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: