![](/img/trans.png)
[英]What is the error in the code for generating tree using inorder and preorder traversal?
[英]I am getting an error in my code. Problem:Construct Binary Tree from Preorder and Inorder Traversal
给定树的前序和中序遍历,构造二叉树。 例如: preorder = [3,9,20,15,7] inorder = [9,3,15,20,7]
返回二叉树。
我的代码如下:
//helper function
TreeNode* build(vector<int> &preorder, vector<int> &inorder, int start, int end)
{
static int index = 0;
if(start>end)
return NULL;
TreeNode *root = new TreeNode(preorder[index++]); //new node creation
if(start == end) // if no element left, then return
return root;
int preindex = binary_search(inorder.begin(),inorder.end(),root->val); //find the position of root for new iteration
root->left = build(preorder,inorder,start,preindex-1); // recur for left
root->right = build(preorder,inorder,preindex+1,end); // recur for right
return root; // return root
}
TreeNode* buildTree(vector<int>& preorder, vector<int>& inorder) {
int start=0;
int end=preorder.size()-1;
return build(preorder,inorder,start,end); // call for helper function
}
上面的代码显示的错误是 =ERROR: AddressSanitizer: heap-buffer-overflow on address 0x603000000030 at pc 0x000000382d77 bp 0x7ffc26698900 sp 0x7ffc266988f8
请帮帮我。 提前致谢。
二分搜索仅适用于已排序的对象,并且似乎没有对中序向量进行排序。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.