我一直在考慮下面的函數寫如何常量轉換爲非const的
T getMinimum() const {}
,我必須使用下面的輔助函數
void getMinimumHelper(Node * subtree, Node * &Location) const {}
不過,我從來不知道如何傳遞這樣的功能。我有一個二叉搜索樹類,其中有一個節點作爲BST類的成員。我已經嘗試了很多東西,如
Node * minNode = this->Node;
Node minNode = this->getMinimumHelper(findMin, findMin);
return minNode->data;
輔助功能:
void getMinimumHelper(Node * subtree, Node * &Location) const {
if (subtree == NULL){
Location = NULL;
}
if (subtree->left == NULL){
Location = subtree;
}
else{
getMinimumHelper(subtreeRoot->left, subtree);
}
}
但是我得到儘可能的右側非法「 - >」 ,當然還有輔助函數是無效的無論什麼所以它不會實際返回任何東西。我一直在爲此工作數小時,並沒有取得任何進展,也無法弄清楚。而且我還有更多的輔助功能這樣的功能,我不知道該怎麼做。
類:
template <class T>
class {
private:
class Node {
public:
T data;
Node * left;
Node * right;
Node * parent;
Node() :left(NULL), right(NULL), parent(NULL) {};
Node(const T& item) {
data = item;
left = NULL;
right = NULL;
parent = NULL;
};
};
public:
BST();
BST(BST&);
~BST();
bool isEmpty() const;
bool search(const T&) const;
private:
Node * _root;
void getMaximumHelper(Node *, Node * &) const;
void getMinimumHelper(Node *, Node * &) const;
};
你有什麼問題?你必須編寫getMinimum()? – Venkatesh
我想,getMinimumHelper()中的參數Node *&minLocation參數是您將得到Node *的最小值所在的位置。將子樹Node *作爲第一個參數傳遞給你想要找出最小值的地方,然後得到Node *作爲最小值的返回值,我想這就是設計輔助函數的方法。 Node * minNode = new Node(); this-> getMinimumHelper(this-> Node,minNode); return minNode-> data; – user1
是的我明白這就是我必須做的,我的問題是傳遞參數到getMinimumHelper(),我知道這是一個BST,因此最左邊的節點應該是最小值,但因爲getMinimum()是const我不能使用值(簡單地在我的getMinimumHelper函數中嘗試了一個this指針,this-> node),並且我無法找出一種方法來改變它,所以我可以。 – user3376703