特別な要件を持つAVLツリーに基づいてランクツリーを作成しようとしています。ノードを含むAVLツリーがあり、各ノードに2つのフィールドがあると仮定します。
id, priority
私のAVLツリーはidでソートされており、次の関数もあります。
foo(currentId, delta)
currentId
この関数によって以下のすべてのIDの優先度を下げると、複雑さO(log n)で機能する必要があるため、私の質問は、ノードをatでdelta
ポップできるようにするためにどの追加情報を格納する必要があるかです。highest priority
任意の段階with complexity O(1)
(fooも使用した後!)。
P.S.
右側のサブツリーに最大優先度、左側のサブツリーに最大優先度に関する情報を保存しようとしましたが、その後に多くの変更が必要foo
です。O(log n)以上のものが必要になります。木についての良いアイデアや良い本を事前に感謝します。