C++ 缺少boost AVL树的合并和拆分?
Boost提供了底层二进制搜索树(BST)的位置,可以选择它作为AVL树 一个(可能是最关键的一个)原因,为什么人们更喜欢AVL树而不是红黑树,是复杂的C++ 缺少boost AVL树的合并和拆分?,c++,data-structures,boost,avl-tree,intrusive-containers,C++,Data Structures,Boost,Avl Tree,Intrusive Containers,Boost提供了底层二进制搜索树(BST)的位置,可以选择它作为AVL树 一个(可能是最关键的一个)原因,为什么人们更喜欢AVL树而不是红黑树,是复杂的O(logN)操作的merge和split。然而,令我惊讶的是,boost::container似乎没有提供这些操作。将merge描述为O(NlogN)复杂性的元素操作(这与基础BST实现无关!),文档甚至没有提到拆分 关于合并,我不能说,但是对于拆分,我可以假设缺少它可能是因为时间常数大小问题,因此复杂度O(logN)的拆分可能不知道两个结果部
O(logN)
操作的merge
和split
。然而,令我惊讶的是,boost::container
似乎没有提供这些操作。将merge
描述为O(NlogN)
复杂性的元素操作(这与基础BST实现无关!),文档甚至没有提到拆分
关于合并
,我不能说,但是对于拆分
,我可以假设缺少它可能是因为时间常数大小
问题,因此复杂度O(logN)
的拆分
可能不知道两个结果部分的大小。但这可以通过使用侵入式容器和每个节点的子树节点计数来修复
还有,但是我在中找不到AVLmerge
和split
算法
所以问题是
是否有一个功能齐全、基于AVL的set/map/multiset/multimap
实现,提供merge
和split
操作,其复杂性为O(logN)
如果没有,如何使用boost::intrusive::avl_set
构建一个
这可能会引起人们的兴趣