【问题标题】:Is there any red black tree or avl tree implementation in c++ standard library?c++标准库中是否有任何红黑树或avl树实现?
【发布时间】:2017-07-24 16:09:41
【问题描述】:

就像 multiset 是 STL 中的二叉搜索树实现一样,是否有任何可用的 RB 树或 AVL 树实现?

【问题讨论】:

  • std::map 是一棵红/黑树。标准并没有说它必须是一个,但性能保证使得它不太可能使用其他东西。
  • 可以肯定的是,大多数标准库实现都使用 RB 树来处理 (multi)set|map 的所有四个。不过,该标准并没有具体说明实现。

标签: c++ algorithm stl avl-tree red-black-tree


【解决方案1】:

据我在帖子中所说,不,截至 2022 年 1 月 10 日,还没有用于红黑树的标准 C++ 库。

【讨论】:

    【解决方案2】:

    通常您不会将multiset 实现为二叉搜索树。使用一个会破坏标准的性能保证,因为树最终可能看起来像一个没有 O(logN) 插入和删除的链表。

    通常std::set/std::multiset/std::map/std::multimap 实现为 RB 树,因为它具有这些性能保证。但这不是必需的。该标准仅保证容器在不同操作中的性能,如何实现则取决于实现。

    如果你想保证你使用的是 RB 树,你要么需要检查你的实现,自己滚动,要么获取一个第三方库来保证它是 RB 树。

    【讨论】:

    • 红黑树是二叉树。平衡二叉树。
    猜你喜欢
    • 2012-08-20
    • 2012-11-30
    • 2021-03-02
    • 2010-09-30
    • 2014-12-20
    • 2013-04-21
    • 2016-03-18
    • 2015-03-06
    • 2019-07-09
    相关资源
    最近更新 更多