数据结构 | Radix Tree 树

news2024/11/14 11:12:03

什么是基数树?

基数树是一种多叉搜索树,数据位于叶子节点上,每一个节点有固定的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.coloradmin.cn/o/818982.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

oracle 19c打补丁遭遇OPATCHAUTO-72043OPATCHAUTO-68061

最近,在AIX上的新装oracle 19C数据库基础版本,使用opatchauto打PSU补丁集35037840时遇到了OPATCHAUTO-72043报错,无法正常应用GI补丁。 一、环境描述 操作系统:AIX 数据库版本:oracle rac 19.3.0新装基础版 应用PS…

代码随想录第四十八天|198、213、337.打家劫舍

198.打家劫舍 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个…

【JAVASE】重载与递归

⭐ 作者:小胡_不糊涂 🌱 作者主页:小胡_不糊涂的个人主页 📀 收录专栏:浅谈java 💖 持续更文,关注博主少走弯路,谢谢大家支持 💖 重载与递归 1. 方法重载1.1 为什么需要方…

开源代码分享(9)—面向100%清洁能源的发输电系统扩展规划(附matlab代码)

1.背景介绍 1.1摘要 本文提出了一种新颖的建模框架和基于分解的解决策略,将随机规划(SP)和鲁棒优化(RO)相结合,以应对协调中长期电力系统规划中的多重不确定性。从独立系统运营商(ISO&#xff…

CAD曲面建模

首先还是要在3d绘图的环境中进行 在网络菜单栏的左侧,有曲面建模相关的功能 包括旋转形成曲面、平移形成曲面,按照两条线形成网格,按照四条封闭的线形成曲面等等 首先演示旋转曲面 需要被旋转的对象,以及旋转轴 首先选择要旋转…

Leetcode | DP | 338. 198. 139.

338. Counting Bits 重点在于这张图。 从i1开始,dp的array如果i是2的1次方之前的数,是1 dp[i - 2 ^ 0]; 如果i是2的2次方之前的数,是1 dp[i - 2 ^ 1]; 如果i是2的3次方之前的数,是1 dp[i - 2 ^ 2]; 198. House Robber 如果…

Hadoop学习指南:探索大数据时代的重要组成——Hadoop运行模式(下)

Hadoop运行模式(下) 前言2.6 配置历史服务器1)配置mapred-site.xml2)分发配置3)在hadoop102启动历史服务器4)查看历史服务器是否启动5)查看JobHistory 2.7 配置日志的聚集1)配置yarn-site.xml2&…

【ChatGPT辅助学Rust | 基础系列 | Rust初相识】Rust简介与环境配置

教程目录 前言一,Rust简介1,Rust的历史2,Rust的特性3,为什么选择Rust4,Rust可以做什么 二, Rust环境配置1,windows11安装2,Linux安装 三,安装IDE 前言 Rust是一种系统编…

智慧水务配电能效系统的开发与功能介绍

随着城市化进程的步伐大大变快,城市建设与科学信息技术的融合程度也在不断提升,尤其是大数据信息技术的迅猛发展,为民生工程由信息化向智能化转型提供了条件。以城市的水务系统为例,依托大数据信息技术构建智慧水务系统是智慧城市…

从 DejaVu 改为 Noto,Ubuntu 23.10 发行版计划调整字体包

近日消息,代号为“Mantic Minotaur”的 Ubuntu 23.10 发行版计划调整字体包,从 DejaVu 修改为 Noto。 近日消息,代号为“Mantic Minotaur”的 Ubuntu 23.10 发行版计划调整字体包,从 DejaVu 修改为 Noto。 Ubuntu 开发团队表示为…

数字人第一剑,先斩“尹天仇”

第一波被数字人抢走饭碗的人类,不是带货主播,也不是虚拟偶像,而是好莱坞的群演们。 过去几个月,数千名好莱坞演员罢工,并出现在Netflix奈飞、华纳兄弟、Discovery、亚马逊、派拉蒙和NBC环球的办公大楼示威。 此次好莱坞…

哈工大计算机网络课程网络安全基本原理详解之:密钥分发中心与公钥认证中心

哈工大计算机网络课程网络安全基本原理详解之:密钥分发中心与公钥认证中心 在介绍密钥分发中心的概念前,先来回顾一下之前介绍的身份认证协议AP4.0:利用随机数R来避免“回放攻击”,并借助于对称加密算法来保证R的加密传输和解密&…

用python编写一个小程序,如何用python编写软件

大家好,给大家分享一下用python编写一个小程序,很多人还不知道这一点。下面详细解释一下。现在让我们来看看! 1、python可以写手机应用程序吗? 我想有人曲解意思了,人家说用python开发渣蔽一个手机app,不是…

“ARTS挑战:探索技术,分享思考“

文章目录 前言一、学习的内容二、遇到的困难及解决办法三、学习打卡成果展示四、学习技巧的总结五、未来学习打卡计划后记 关于 ARTS 的释义 ● Algorithm: 每周至少做一个 LeetCode 的算法题 ● Review: 阅读并点评至少一篇英文技术文章 ● Tips: 学习至少一个技术技巧 ● Sha…

大数据面试实际场景类问题怎么准备,实在遭不住了!

300万字!全网最全大数据学习面试社区等你来! 前几天我发了一个面试总结的文章,实际场景类问题在大数据领域面试的占比越来越多。大家面试开始「务实」,在实际场景问题中,顺便增加对框架原理性内容的考察,这…

Docker中gitlab以及gitlab-runner的安装与使用

1、本文主要讲述如何使用Docker安装gitlab以及gitlab-runner,并且会讲述gitlab-runner如何使用 2、gitlab部分不需要修改过多的配置即可使用,本文未讲述https配置,如有需求,可自行百度 3、Docker如何安装可以自行百度 一、Docker安…

react中的高阶组件理解与使用

一、什么是高阶组件? 其实就是一个函数,参数是一个组件,经过这个函数的处理返回一个功能增加的组件。 二、代码中如何使用 1,高级组件headerHoc 2,在普通组件header中引入高阶组件并导出高阶组件,参数是普…

linux备份与还原系统(类似window上ghost备份还原)

一、摘要 在linux上进行了几年的开发工作 (qt ros) 突然发现,现在有公司硬件、笔记本台式机一台占一个系统,导致硬件太浪费,又不能用虚拟机(有时候要链接硬件必须物理机)怎么办? 二…

Simple Set Problem

题意: 给你k个集合,每个集合里有ci个数,在每个集合里各挑一个数,求挑的k个数里的最大值减去最小值的值最小 思路: 可以将题意转换为,挑的所有数的集合一共有n种,求挑的数的最大值最小值的差最…

idealC-2020.1.4免费下载(附安装教程)

下载地址 [软件名称]: IntelliJ IDEA 2020 [软件大小]: 560MB [安装环境]: Windows [下载链接]: 链接: https://pan.baidu.com/s/1yGOWqfRVE6cPsAe0qHpnbg https://pan.baidu.com/s/1yGOWqfRVE6cPsAe0qHpnbg 提取码: zt88 软件介绍 idea 2020.是由捷克IntelliJ公司而…