【发布时间】:2016-03-02 09:44:44
【问题描述】:
我正在尝试实现一个从二叉树中搜索节点的函数,并返回一个指向找到的节点的节点指针,如下所示:
template <class T>
Node<T>* BST<T>::findNode(T a,Node<T>* node)
{
cout<<node->value<<endl;
if(a == node->value)
{
return node;
}
if(a < node->value)
{
if(node->left==NULL)
{
return NULL;
}
findNode(a, node->left);
}
if(a > node->value)
{
if(node->right==NULL)
{
return NULL;
}
findNode(a, node->right);
}
}
在主程序中,我有一个指针(称为 bst),指向填充了一些节点的二叉搜索树实例。我声明了一个节点指针并像这样调用函数:
Node <int> * n = bst-> findNode(3,bst->head);
问题:如果找不到匹配值,该函数运行良好,但是,如果找到匹配值(即转到if(a==node->value) block,它将始终返回相同的值(在我的计算机中,节点 n 总是得到 0x6 的值),它是如何发生的以及如何解决这个问题?
TIA!!
【问题讨论】:
标签: c++ function pointers binary-search-tree