Python的标准库 – 有平衡二叉树的模块吗?

Python的标准库中是否有AVL或Red-Black模块或其他types的平衡二叉树? 我试图find一个,但没有成功(我是相对较新的Python)。

不,stdlib中没有一个平衡的二叉树。 但是,从您的意见,这听起来像你可能有其他的select:

  • 你说你想要一个BST而不是O(log n)search的列表。 如果search是你所需要的,并且你的数据已经被sorting,那么bisect模块为列表提供一个二进制searchalgorithm。
  • Mike DeSimone推荐了套和字典,你解释了为什么列表algorithm太慢。 集合和字典被实现为哈希表,其具有O(1)查找。 Python中大多数问题的解决scheme确实是“使用字典”。

如果这两种解决scheme都不适合你,你将不得不去第三方模块或者实现你自己的模块。

在我看来 ,stdlib中没有这种types的东西,但是快速浏览pypi会带来一些其他的select :

  • rbtree
  • pyavl
  • blist

有几个例子,我发现heapq包 (在stadndard库中)是有用的,尤其是如果在任何时候你想要O(1)访问你的集合中最小的元素。

对于我来说,我正在跟踪定时器的集合,通常只是想检查最小时间(首先执行的时间)是否准备好。

有一个叫“bintrees”的新软件包,支持不平衡,AVL和RB树。 你可以在这里find它。

不,但是在Python中有AVL树对象 (很老!)和一个在SourceForge上的(closures)项目 – Python的avl-trees 。