本文对Melon库中的红黑树进行介绍,关于Melon库,这是一个开源的C语言库,它具有:开箱即用、无第三方依赖、安装部署简单、中英文文档齐全等优势。
简介
红黑树是一种被应用的非常广泛的数据结构,用于快速搜索指定数据集中的数据。
这里我们不对红黑树的原理进行展开,仅给出其时间复杂度和使用场景介绍。
时间复杂度
- 插入:O(logN)
- 删除:O(logN)
- 搜索:O(logN)
使用场景
- 实现字典查询,即kv查询
- 文件描述符索引,例如维护socket fd
使用
Melon库中的红黑树经历了若干次迭代,最终形成了当前的使用形态。我们先给出代码,再进而说明为何会演变至此。
红黑树
#include <stdio.h>
#include <stdlib.h>
#include "mln_core.h"
#include "mln_log.h"
#include "mln_rbtree.h"
static int cmp_handler(const void *data1, const void *data2)
{
return *(int *)data1 - *(int *)data2;
}
int main(int argc, char *argv[])
{
int n = 10;
mln_rbtree_t *t;
mln_rbtree_node_t *rn;