struct Node{
Node* ch[26];
string str;
Node(){
for(int i = 0; i < 26; i++) {
ch[i] = NULL;
}
str = "";
}
};
class Solution {
public:
vector<string> results;
Node* root;
void insert(Node* p, string s) {
int len = s.size();
for(int i = 0; i < len; i ++) {
if(p->ch[s[i] - 'a'] == NULL) {
p->ch[s[i] - 'a'] = new Node();
}
p = p->ch[s[i] - 'a'];
}
p->str = s;
}
vector<string> wordSearchII(vector<vector<char> > &board, vector<string> &words) {}
}
這是我爲我的問題定義的Trie。 「根」和「向量結果」都是Solution的成員變量。我想問的問題是,爲什麼我在使用root之前必須「新建Node()」。在使用結果之前,我不需要「新的矢量」。我明白解決方案將調用默認構造函數,然後「結果」將調用其默認構造函數。爲什麼root不能使用Node的默認構造函數?類可以默認初始化其「指針成員變量」?
我碰巧意識到我的困惑可能與「指針」有關。但我仍然不瞭解細節。任何人都可以解釋一下嗎?對此,我真的非常感激。
我不明白你的問題。 – amanuel2
@ amanuel2我嘗試直接在函數「wordSearchII」中使用root。這是行不通的。如果我在將單詞插入Trie之前使用「root = new Node()」,它將起作用。我只是認爲Solution類會爲我初始化「Node * root」。另一種表達我的問題的方法是:將像指針一樣的指針默認初始化? – wangzishan
'Solution'不會將'root'初始化爲任何東西,因爲你沒有告訴它!不,指針不是默認初始化的,你必須自己初始化它。 –