jihel/library-rbtree

实现红黑树的库

dev-master 2019-02-22 14:49 UTC

This package is auto-updated.

Last update: 2024-09-19 08:05:33 UTC


README

PHP面向对象实现的红黑树。您可以在维基百科上找到关于此类二叉搜索树的信息。

1- 安装

将库添加到composer.json的require中

{
    "require": {
        "jihel/library-rbtree": "dev-master",
    }
}

或者

php composer.phar require jihel/library-rbtree

2- 使用方法

a) 创建一个树

use Jihel\Library\RBTree\Tree as Tree;
$tree = new Tree();

b) 创建一个节点

$node = new Jihel\Library\RBTree\Node(1, 'My value');
$tree->insert($node);

c) 删除一个节点

$tree->remove($node);

请注意,变量$node没有被删除,该对象仍然存在,但已从树中分离。

d) 查找一个节点

$node = $tree->find(1);

e) 查找一个相对于另一个节点的节点

$next = $tree->findRelative($node, Jihel\Library\RBTree\Model\NodeInterface::POSITION_RIGHT);
// or
$next = $tree->findSuccessor($node);

f) 枚举最小值和最大值之间的节点

$list = $tree->enumerate(1, 12);

您可以查看使用整数节点进行简单实现的示例

4- 感谢

我受到了麻省理工学院Gokce Toykuyu工作的启发。参见他的实现

还有一些关于红黑树工作的YouTube视频,可能会引起您的兴趣

感谢我花时间给懒惰的开发者上课程。

您可以通过这里访问我的简历