struct Ternary {
char current;
bool wordend;
Ternary* left;
Ternary* mid;
Ternary* right;
Ternary(char c='@',Ternary* l=NULL, Ternary* m=NULL, Ternary* r=NULL,bool end=false)
{
wordend=end;
current=c;
left=l;
mid=m;
right=r;
}
};
void add(Ternary* t, string s, int i) {
if (t == NULL) {
Ternary* temp = new Ternary(s[i],NULL,NULL,NULL,false);
t=temp;
}
if (s[i] < t->current) {
add(t->left,s,i);
}
else if (s[i] > t->current) {
add(t->right,s,i);
}
else
{
if (i + 1 == s.length()) {
t->wordend = true;
}
else
{
add(t->mid,s,i+1);
}
}
}
私はadd()
文字列を使用して単語の列を追加すると if(t==NULL)
セグメントが、ツリーはすなわちノードがリンク取得されていない形成されて取得されていないの内側に印刷されてきています。3分探索木
やアドオンなどの引数を(三項は、** tは、文字列s、私はint型)、次にやる* tは一時 –
代わりの一時を使用して=宣言し、私はまた、次のことを試してみましたステートメント t =新しい3進数(s [i]); もし私がtree = ...を使用していたら、ツリーのルートノードが失われています – CoderXX
@Pratik:コード内の何も変更せずに、 'add()'の最後に 'return t;'を置き、 'add 「私が指摘したように、あなたは何も失うことはありません。 – Mat