C++ を学習しようとしているときに、非常に基本的なトライを表すクラスを実装しようとしました。私は次のことを思いつきました:
class Trie {
public:
char data;
vector<Trie* > children;
Trie(char data);
Trie* addChild(Trie* ch); // adds child node
(skipped others members/methods)
};
メソッドaddChildは、同じデータを持つ子chがベクターchildrenに存在するかどうかをチェックし、存在しない場合はそこに挿入し、存在する場合は、既存の子へのポインターを返します。
ここで、このコード スニペットを検討します。
Trie t('c');
Trie* firstchild = new Trie('b');
Trie* secondchild = new Trie('a');
firstchild->addChild(secondchild);
t.addChild(firstchild);
secondchildへのポインターしかない場合、何らかの方法でfirstchildまたはtへのポインターを返すことは可能ですか?
私の作業コードのロジックは、現在のオブジェクトの親まで、(下位ノードから上位ノードへ) トライを「上」にトラバースする必要があるため、それが可能かどうかを知りたいです。現在、私は再帰関数を使用して下に移動していますが、他の方法があるかどうか疑問に思っていますか?
上記が不明確であるか、どこかで失敗した場合は申し訳ありませんが、私はかなり経験が浅く、作業コードなしで記憶から書いています。