C++ 二叉搜索树成员函数
我在编写代码以确定树中是否存在某些数据时遇到问题,这是BinaryTreeNode类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,但我似乎无法让它工作。
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);
}