leftrb是一个2-3平衡二进制的左倾红黑(llrb)实现

leftrb的Python项目详细描述


#左rb/llrb

leftrb是一个2-3平衡二进制的左倾红黑(llrb)实现 在python中搜索树。

这是robert sedgewick在 [他的论文](http://www.cs.princeton.edu/~rs/talks/LLRB/LLRB.pdf)和 书[算法,第四版](http://algs4.cs.princeton.edu/home/),这是写 罗伯特·塞吉威克和凯文·韦恩。在他们的许可下,[最初的gpl v3授权java 代码](http://www.cs.princeton.edu/~rs/talks/LLRB/Java/RedBlackBST.java) 被授权为lgpl v3,并移植到python。

##概述

平衡二叉搜索树(bbst)在动态环境下保持元素的有序性 更新(插入和删除)并支持各种特定于订单的查询。

红黑树是事实上的标准bbst算法,并且是底层的 C++、Java、Python、BSD UNIX中符号表实现的数据结构 Linux和许多其他现代系统。

所有红黑树都基于在二叉树中实现2-3或2-3-4棵树, 使用红色链接将内部节点绑定为3个节点或4个节点。搜索,插入 删除操作为o(log n),空间需求为o(n)。

然而,许多传统的实现在对称的 旋转和删除操作的分支。所以他们不容易推理 增加其他属性,这就是bbst的常用功能:它们被使用 实现其他常见的数据结构,如优先级队列和间隔树。

实现2-3树的llrb方法是对传统的 实现-它维护了一个附加的不变量,所有红色链接都必须向左倾斜 插入和删除期间除外。因此,可以通过添加 只是几行代码到标准的bst算法。

llrb树基于三种思想的结合:

  • 使用递归实现。
  • 要求所有3个节点都向左倾斜。
  • 在树上执行旋转(在递归调用之后)。

llrb方法是最近(2008年)由robert sedgewick发现的 普林斯顿大学的。有关原始代码和更多信息,请阅读“左倾红黑树”上的http://www.cs.princeton.edu/~rs/talks/LLRB/LLRB.pdf](http://www.cs.princeton.edu/~rs/talks/LLRB/LLRB.pdf

##安装

来自python包索引:

pip install leftrb

或来自github源代码:

git clone https://github.com/peterhil/leftrb.git cd leftrb python setup.py install

##关于

leftrb/llrb是由[peter hillerstrum](http://composed.nu/peterhil/)编写的。 在twitter[@peterhil](http://www.twitter.com/peterhil)上跟我来!

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
在java中将字符串转换为音频输入   java如何使用Spring Boot RestTemplate解组json列表   计算机上C++ OpenCV项目转换为OpenCV Android的java步骤   Java Spring Telegraf数据表不工作   openurlconnection与connect之间的java差异?   java Solr字段搜索、通配符和转义字符   java如何使用DLFolderLocalServiceUtil类的getFolders()方法?   尝试用Java编写文件   java连续双缓冲解决方案不起作用   两个数组的Java乘积   java Jackson,如何正确编写自定义反序列化程序   java将布尔标志按一定顺序排列以获得更好的性能是否有意义   java Vaadin无缓冲网格无法关闭   java在MySQL中以同一用户身份同时从不同客户端登录安全吗?   java如何使用安卓asynchttp库   java无法在Android中使用AlarmManager停止服务   java在Hibernate的XML配置文件中指定默认值   Spring启动应用程序中的java内存SQLITE不工作   Java代码无法写入文本文件,