問題タブ [intrusive-containers]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - ブースト AVL ツリーのマージと分割がありませんか?
Boost はboost::container::set/map/multiset/multimap
、基礎となる二分探索ツリー (BST)を構成できる場所を提供し、AVL ツリーとして選択できます。
Red-Black ツリーよりも AVL ツリーを好む理由の 1 つ (おそらく最も重要な理由) は、複雑さの操作merge
と操作です。しかし、驚いたことに、これらの操作は提供されていないようです。ドキュメントでは、要素単位の複雑な操作として説明されています (これは、基になる BST 実装に関係なく!?)、ドキュメントでは!についても言及されていません。split
O(logN)
boost::container
merge
O(NlogN)
split
については言えませんがmerge
、についてsplit
は、一定時間の問題によってその欠如が正当化される可能性があると推測できます。しかし、これは、侵入型のコンテナーを持ち、各ノードでサブツリー ノードの数を保持することで修正できます。size
split
O(logN)
もありますが、ドキュメントに AVLとアルゴリズムがboost::intrusive::avl_set
見つかりませんでした。merge
split
質問は次のとおりです。
- の複雑さを
set/map/multiset/multimap
提供しmerge
、操作する、完全に機能する、すぐに使用できる AVL ベースの実装はありますか?split
O(logN)
- そうでない場合、どのように使用してビルドでき
boost::intrusive::avl_set
ますか?