如何解决Python中内置的二进制搜索树?
有没有特殊的原因,据我所知-
我猜的原因是,如此多的应用的高度调整dict
和set
实现(这是哈希表)工作做好。在大多数情况下,它们足够好。在某些情况下,您确实需要平衡的二进制搜索树的性能特征(例如,基于键而不是加序的有序遍历),但这些条件已经远远超出了人们通常会抓住第三方软件包的范围在这种情况下。
我在PyPI上使用bintrees包有很好的经验。这在纯Python中以及作为用Cython编写的扩展都具有不平衡的AVL和红黑二进制树的实现。
我认为其余原因本质上是历史事故。如果编写二叉树的人游说将其包含在stdlib中,并且愿意忍受维护和发布所施加的约束,那么它可能会加入进来。(尽管Cython依赖会导致问题,我猜)
对于哈希表(如字典或集合),插入和查找为O(1),而对于平衡树,则为O(log(n))。键的有序遍历是树中的O(n),但是要对哈希表执行相同的操作,您需要先对键进行排序,所以它是O(n * log(n))。在选择要使用哪种数据结构时,您需要考虑将要使用的操作,并选择在应用程序中最有意义的折衷方案。
解决方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。