AVL木書いた3
PersistentAVLSetのドキュメント
AVLSetを継承してinsert/erase周りをオーバーライドして実装
insert/eraseで変更のあるノードは $O(\log N)$ 個なので全部コピーして良い
merge/split は未実装 (オーバーライドしてassertすべき?)
count(), find_Kth()などのメソッドはそのまま使用可能
insert(const T &dat)
dat を集合に追加する 戻り値はdatを追加したあとのPersistentAVLSet
呼び出し元のオブジェクトを変更することはない $\Theta (\log N)$
erase(const T &dat)
dat を集合から削除する 戻り値はdatを削除したあとの PersistentAVLSet
呼び出し元のオブジェクトを変更することはない $\Theta (\log N)$