缺少用于增强AVL树的合并和拆分吗?

问题描述

Boost提供boost::container::set/map/multiset/multimap所在的基础二进制搜索树(BST)can be configured,并且可以将其选择为AVL树。

为什么mergesplit复杂度为O(logN)的操作(为什么是最喜欢AVL树而不是红黑树)是一个(也许是最关键的)原因。但是,令我惊讶的是,似乎boost::container没有提供这些操作。 The documentationmerge描述为O(NlogN)复杂度的元素方式操作(这与底层的BST实现无关!),并且文档甚至没有提到{{1} }!

我无法谈论split,但是对于merge,我可以假设恒定时间split的问题可能会证明缺乏size,所以{{ 1}}复杂度split可能不知道两个结果部分的大小。但这可以通过具有侵入性容器并保存每个子节点的子树节点来解决

也有boost::intrusive::avl_set,但在the documentation中找不到AVL O(logN)merge算法。

问题就解决了。

  1. 是否有split的基于功能的,随时可用的AVL实现,它提供set/map/multiset/multimap的复杂性的mergesplit操作?
  2. 如果没有,如何使用O(logN)构建一个

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)