原則として、ツリーを歩いてマークされた値のリストを保存することとの間にトレードオフがあります。あなたは2つの極端なことを言いました、私はそれらの中間のどこかに座っている例をあなたに与えます。頭に浮かぶ
ひとつのアイデアはあなたの例では、それはあまり保存しないように、ストレージと時間のかなりバランスの取れたミックスを与える必要があり、各マークされたノード、でマークされ子供たちの次の「層」を記憶するが、ためていますたとえば、あなたが
A
/\
B* C
/\ \
D* E F
/\ \ \
G H* I* J*
//\
K L M
を持っている場合は、H,I,J
にD
と「空」のマーカーでB
でD,I
とH
を格納します。あなただけのすべてのブランチがマークされたノードに当たるまで、例えば、A
ためのリストを取得するために、あなたはA->B
とA->C->F->J
から歩いてしなければならないので、その後B
はあなたを与えるだろう、歩かなければならないノードのためのリストを取得するには
I,D
、D
はH
となります。あなたがこの場合も、元のツリーとだけ一緒にマークされたノードの木を記憶するものとして考えることができ
、2本の木
B J
/\
D I
|
H
マークされたノードの分布に応じて、あなたがすることができるかもしれませんこのアイデアをアプリケーションに最適化します。
これをスピードアップするために中間結果を保存する方法はたくさんありますが、それ以上の文脈がなければ、何が役立つかは分かりません。 – trutheality
@PhilBolducあなたが投稿する前に考えてください - ありがとうございます。 –
@trutheality私はいくつかのUI作業のためにこれが必要です。基本的には、サブウィジェットは、親のサイズが変わるたびにサイズ変更イベントを受け取ることができなければなりません。つまり、ウィンドウがサイズ変更された場合、埋め込まれたテキストボックスはサイズ変更イベントを受け取る必要があります。 –