遇到麻煩編寫代碼,以確定是否某些數據出現在我的樹,這是BinaryTreeNode類二叉搜索樹成員函數
class BinaryTreeNode {
public:
Data * nodeData;
BinaryTreeNode * left;
BinaryTreeNode * right;
我需要完成的功能是(不能改變這個定義)
bool BinaryTreeNode::member(Data * data) const {
我試圖創建一個變量,像currentnode =這個和使用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;
}
你可以發佈你已經試過的代碼,以便我們可以幫助你調試 – Pradheep
你的兩次嘗試都可以完成這項工作。但顯然,我們無法告訴您錯誤在哪裏。 –
編輯我的遞歸嘗試 –