下面是一个searchVal
在二叉树中搜索值的函数。二叉树的节点存储在一个向量中,向量nodeVec
中的第一个对象作为根。
节点结构
class bst{
public:
//other functions..//
int searchVal(int)
private:
bst *lLink;
int info;
bst *rLink;
}
在 main 中调用部分
cout << "Enter Value to search ";
int val;
cin >> val;
int ret = nodeVec[0].searchVal(val);
if (ret == 2)
cout << "Value Not Found" << endl << endl;
else
cout << "Value Found" << endl << endl;
功能
int bst::searchVal(int val)
{
if (info != val)
{
if (info > val)
{
if (lLink != NULL)
lLink->searchVal(val);
else
return 2;
}
if (info < val)
{
if (rLink != NULL)
rLink->searchVal(val);
else
return 2;
}
}
if (info == val)
return 1;
}
在调试(使用代码块)时,我观察到在满足任何条件后,例如,如果满足条件info==val
,则执行指针(IDE 中的箭头指向正在处理的行)转到末尾,searchVal
然后它转到最近if
(从末尾) 但是它不会进入该条件的块。它总是返回info
存储在根节点中的ret
非1
或2