C++ 二叉搜索树成员函数

C++ 二叉搜索树成员函数,c++,tree,binary-tree,binary-search-tree,C++,Tree,Binary Tree,Binary Search Tree,我在编写代码以确定树中是否存在某些数据时遇到问题,这是BinaryTreeNode类 class BinaryTreeNode { public: Data * nodeData; BinaryTreeNode * left; BinaryTreeNode * right; 我需要完成的函数是(无法更改此定义) 我尝试创建一个类似currentnode=this的变量,并使用while循环检查树的哪一侧向下移动,然后更新currentnode,但我似乎无法让它工作。

我在编写代码以确定树中是否存在某些数据时遇到问题,这是BinaryTreeNode类

class BinaryTreeNode {
  public:
    Data * nodeData;
    BinaryTreeNode * left;
    BinaryTreeNode * right;
我需要完成的函数是(无法更改此定义)

我尝试创建一个类似currentnode=this的变量,并使用while循环检查树的哪一侧向下移动,然后更新currentnode,但我似乎无法让它工作。所以我想也许它应该用递归来完成?我试过了,但程序锁定了

如果有人能给我指出正确的方向,那将非常有帮助

以下是我的许多尝试之一(这一次尝试递归):

在对该函数的第一次调用中,
永远不会更改为
NULL

您可以直接删除这一行。然后,只需检查两个分支中的
NULL

    if(left && nodeData->compareTo(data) == 1) {
        return left->member(data);
    }
    if(right && nodeData->compareTo(data) == -1) {
        return right->member(data);
    }
递归检查左树和右树后,就完成了

在对该函数的第一次调用中,
永远不会更改为
NULL

您可以直接删除这一行。然后,只需检查两个分支中的
NULL

    if(left && nodeData->compareTo(data) == 1) {
        return left->member(data);
    }
    if(right && nodeData->compareTo(data) == -1) {
        return right->member(data);
    }

一旦你递归地检查了左树和右树,你就完成了。

你可以发布你尝试过的代码,这样我们就可以帮助你调试你的两次尝试。但是我们显然不能告诉你bug在哪里。用我的递归尝试编辑了op。你能发布你尝试过的代码吗?这样我们可以帮助你调试你的两次尝试都可以完成这项工作。但是很明显,我们不能告诉你bug在哪里。我用递归尝试编辑了op
while(this != NULL)
    if(left && nodeData->compareTo(data) == 1) {
        return left->member(data);
    }
    if(right && nodeData->compareTo(data) == -1) {
        return right->member(data);
    }