数据结构 | Radix Tree 树

chatgpt/2023/9/24 1:40:52

什么是基数树?

基数树是一种多叉搜索树,数据位于叶子节点上,每一个节点有固定的2^n个子节点(n为划分的基大小,当n为1时,为二叉树)。

什么为划分的基?

以一个64位的长整型为例,我们可以将64位的长整数切分为8位一组、4位一组、2位一组甚至1位一组等:

b5b0da23d65e26cfcb7b0702becf2c8d.png

基数树的搜索方法是?

基数树的搜索方法是将索引的数据切片为若干小段(基),然后一小段一小段地向下查找,在有限的树高度内,一定能完成查找。

以上图数据按照8位划分为例:

be81cc854e673a74d1046bb4f6b91338.png

可以观察到,当一个数据划分的越小块(基越小),会导致树的层数更高,但每个结点的子节点数更少,当一个数据划分的越大块(基越大),树的层数更低,每个结点的子节点数会更多。

特殊的基数树——Trie树

Trie树可以视作特殊的基数树,由于它索引的是字符串,它每个结点只有26个合法的子节点,但是由于字符串的特性,Trie树的层次是不确定的,可能存在特别长的字符串导致树的层次特别高。

基数树的插入和删除

基数树的插入和删除和其他查找树一致,对于插入操作,首先需要查找到插入位置,不存在则创建,对于删除操作,仅需删除叶子节点即可满足要求,可以不必将中间结点删除。

附上一张图源网络的插入过程:

https://juejin.cn/post/6933244263241089037

2f26e069e5b185711790f3ee4d712426.jpeg

基数树的应用场景

(1)基数树用于内存管理,在Linux内核中,使用Radix Tree将页面组织起来,方便查找,通过Radix Tree,输入文件内偏移可以快速定位Cache项。参考:https://www.sohu.com/a/290524170_467784

(2)基数树存储公共前缀数据,基数树存储具有大量公共前缀的数据时,可以压缩数据量,如路由表(相同的IP前缀,固定的数据长度 https://github.com/openstat/ip-radix-tree)、内存地址映射(相邻的内存地址前缀相同,固定的数据长度)等场景,均可使用基数树做kv存储。

(3)用作数据库索引。参考:

https://blog.csdn.net/weixin_33699914/article/details/90594289

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.exyb.cn/news/show-5314745.html

如若内容造成侵权/违法违规/事实不符,请联系郑州代理记账网进行投诉反馈,一经查实,立即删除!

相关文章

【git技巧】什么是 .gitkeep

.gitkeep 文件的作用 就是——使 Git 保留一个空文件夹! Git 是一个文件追踪系统,这也导致了 Git 的设计初衷是对文件进行追踪,所以,Git 不会追踪一个空目录。 但是,在某些情况下,我们确实是需要保留一些…

【LeetCode每日一题】——1572.矩阵对角线元素的和

文章目录 一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目示例】六【题目提示】七【解题思路】八【时间频度】九【代码实现】十【提交结果】 一【题目类别】 矩阵 二【题目难度】 简单 三【题目编号】 1572.矩阵对角线元素的和 四【题目描述】 给你一…

【Docker】Docker中安装MySQL数据库

文章目录 1. 前言2. Docker中安装MySQL服务2.1. 查看可用的MySQL版本2.2. 拉取MySQL镜像2.3. 查看本地镜像2.4. 运行容器2.5. 查看正在运行的容器2.6. 查看容器内部2.7. 授权root远程登录2.8. 在宿主机连接到容器的MySQL2.9. 用Navicat连接容器的MySQL 3. 如果是MySQL8.0可能需…

opencv中轮廓相关属性

一、介绍 findContours() :The function retrieves contours from the binary image。 二、代码 void main() {Mat src imread("match00.bmp", IMREAD_GRAYSCALE);Mat mask;threshold(src, mask, 128, 255, cv::THRESH_BINARY_INV);Mat element cv::g…

誉天程序员-2301-3-day08

4. 书籍管理实现CURD 这个结构比较复杂,是有一套复杂的机制,注意它们之间的关系和控制实现。  新增和修改怎么复用对话框  对话框中的数据,表格中展现的数据,临时记录正在操作的数据统一联动起来  单条删除怎么传递数据&am…

[threejs]相机与坐标

搞清相机和坐标的关系在threejs初期很重要,否则有可能会出现写了代码,运行时一片漆黑的现象,这种情况就有可能是因为你相机没弄对。 先来看一下threejs中的坐标(世界坐标) 坐标轴好理解,大家只需要知道在three中不同颜色代表的轴…

AI赋能下的“数字人”与“数智人”:异同解析

由于人工智能技术的快速发展,我们逐渐进入了一个数字化的时代。在这个时代中,两个概念引起了广泛的关注和讨论,那就是“数字人”和“数智人”。虽然这两个概念都与人工智能有关,但它们在含义和应用上存在一些不同之处。在本文中&a…

WEB:mfw

背景知识 Git泄露 Githack使用 命令执行漏洞 题目 这里页面里有Git,猜测是Git泄露 先用dirsearch扫一下 确实存在.git目录,可以尝试访问一下 使用Githack来下载并恢复.git文件 这里记得使用的时候关闭杀毒软件 结果会自动保存 点进去先看一下flag这个…
推荐文章