c++逻辑错误(boolean)

C++ Logic Error (boolean)

本文关键字:boolean 错误 c++      更新时间:2023-10-16
template <class T>
bool BST<T>::printSubtree(T item)
{
  int id;
  bool result;
  if (root==NULL)
  {
    cout << "Empty Tree, Please insert data" << endl;
    return false;
  }
cout << "Enter ID to print sub-tree" << endl;
cin >> id;
result=searchSubTree(id, item);
 if(result == false)
 {
     cout << "Record Not Found" << endl << endl;
 }
//preOrderPrint();
return true; 
}
template <class T>
bool BST<T>::searchSubTree(int target, T &item)
{
BTNode<T> *cur, *curtemp;
bool flag = false;
if (root==NULL)
{
    cout << "Empty Tree, Please insert data" << endl;
    return false;
}
cur = root;
curtemp = root;
while(!flag && cur!= NULL)
{
    if(curtemp->item.id == target)
    {
        flag = true;
        root = curtemp; //promote desired node to become root temporarily
        inOrderPrint();
        flag = true;
    }
    else if (curtemp->item.id < target) //target value greater than current value, search right sub-tree
    {
        curtemp = curtemp->right;
    }
    else if (curtemp->item.id > target) //search left sub-tree
    {
        curtemp = curtemp -> left;
    }   
    root = cur; //set the root position to its ori place
}
return flag; 
}

在上面的代码中,一切运行正常。然而,为什么我试图输入一个不存在的值(id输入),我的程序只是崩溃,它不能继续到if(result == false)。我可以知道这里有什么问题吗?

谢谢你的指导!

你的while语句应该使用curtemp而不是cur。

while(!flag && curtemp!= NULL)