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) {}
}
This is the Trie I defined for my problem. The "root" and "vector result" are both member variables of Solution. The question I want to ask is that why I must "new Node()" before I use root. I do not need to "new vector" before I use results. I understand that the Solution will call default constructor and then "results" will call its default constructor. Why couldn't root use the default constructor of Node?
I happen to realize that my confuse may relate to "pointer". But I still don't understand the details. Can anyone explain about it? I really appreciate it.
 
     
    