C++ 函数总是返回相同的指针

标签 c++ function pointers binary-search-tree

我正在尝试实现一个从二叉树中搜索节点并返回指向找到的节点的节点指针的函数,如下所示:

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!!

最佳答案

您的递归调用实际上并未返回节点:它们需要看起来像

return findNode(a, node->left);

关于C++ 函数总是返回相同的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35743503/

相关文章:

c# - 发布目标中缺少 VS 2019 azure 函数

PHP 公共(public)函数的行为类似于静态

c++ - 什么决定了调用 delete 时写入 C++ 指针的内容?

c++ - long long 数据类型的意外左移修改了看似无关的变量

c++ - 为什么在增加指针的整数值时得到一个随机数?

c++ - openCV c++ : Problems working with CvBoost (Adaboost classifer)

c++ - boost::thread 构建错误(无法链接 lib && 未解析的外部)

Python函数替换输入变量

c++ - screen.h头文件方法困惑

c++ - 打印 ASCII 艺术钻石