问题描述
Boost提供boost::container::set/map/multiset/multimap
所在的基础二进制搜索树(BST)can be configured,并且可以将其选择为AVL树。
为什么merge
和split
复杂度为O(logN)
的操作(为什么是最喜欢AVL树而不是红黑树)是一个(也许是最关键的)原因。但是,令我惊讶的是,似乎boost::container
没有提供这些操作。 The documentation将merge
描述为O(NlogN)
复杂度的元素方式操作(这与底层的BST实现无关!),并且文档甚至没有提到{{1} }!
我无法谈论split
,但是对于merge
,我可以假设恒定时间split
的问题可能会证明缺乏size
,所以{{ 1}}复杂度split
可能不知道两个结果部分的大小。但这可以通过具有侵入性容器并保存每个子节点的子树节点来解决。
也有boost::intrusive::avl_set
,但在the documentation中找不到AVL O(logN)
和merge
算法。
问题就解决了。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)