void BinTree::arrayToBSTreeHelper(NodeData* toRead[], Node* current, int low, int high) // ******
{
if (low >= high)
{
return;
}
int midPoint = (low + high) / 2;
cout << "low, midPoint, and high at entry to helper: " << low << " " << midPoint << " " << high << endl; // ****** prints 0, 6 and 13
insert(toRead[midPoint]); // ****** insert takes a NodeData*
arrayToBSTreeHelper(toRead, current->left, low, midPoint); // ERROR
arrayToBSTreeHelper(toRead, current->right, midPoint + 1, high);
}
低,midPoint和high的打印输出发生一次,然后在第一次递归调用时给出“错误访问”消息。 “插入”已经过测试,似乎工作正常。
以递归方式传递NodeData *的数组“toRead”似乎有问题,但我无法弄清楚它是什么。
环境是Xcode 7.1。
答案 0 :(得分:1)
传递数组“toRead”似乎有问题 NodeData *递归
这是不正确的。
当({因为)current
为零时失败。
如果您认为某些设计使current
在此时可靠地不为零,则需要修复该设计错误。因为我们可以看到 IS 为零。
如果设计的其他部分不应该保证此时current
指向有效对象,那么您展示的代码应该在使用之前对其进行测试。