我无法编写代码来确定我的树中是否存在某些数据,这是 BinaryTreeNode 类
class BinaryTreeNode {
public:
Data * nodeData;
BinaryTreeNode * left;
BinaryTreeNode * right;
我需要完成的功能是(不能改变这个定义)
bool BinaryTreeNode::member(Data * data) const {
我试图创建一个像currentnode = this 这样的变量,并使用一个 while 循环来检查树的哪一侧向下推进,然后更新 currentnode,但我似乎无法让它工作。所以我在想也许它应该通过递归来完成?我试过了,但程序锁定了。
如果有人能指出我正确的方向,那将非常有帮助。
这是我的许多尝试之一(这个尝试递归):
bool BinaryTreeNode::member(Data * data) const {
if(nodeData == NULL) {
return false;
}
else if (nodeData->compareTo(data) == 0) {
return true;
}
while(this != NULL) {
if(nodeData->compareTo(data) == 0) {
return true;
}
else if(nodeData->compareTo(data) == 1) {
return left->member(data);
}
else if(nodeData->compareTo(data) == -1) {
return right->member(data);
}
}
return false;
}