`
8821249
  • 浏览: 68874 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

树与存储

 
阅读更多
二叉树:
一个根节点,每个节点下挂着最多2个子节点。、
概念:
度:结点的分支数,二叉树度为2。
深度:树的层次。

二叉排序树:
二叉树的基础上,每个节点上都有一个数字,节点上的数字都比右节点上的大。
应用场景:
基于内存的排序数据结构,写入时将数据写入到对应的位置。数据可能会出现倾斜,可以想到数字写入顺序如果不是50-20-60-18-55,而是18-20-50-55-60,那么二叉树就会退变为链表。




B-树:
B-树每个节点上包含着数据和指针,每个指针指向其一个子节点的位置,并且数据的个数为指针的2d-1个。这里的d是指针的个数,同时也是树的“度”。
B-树的查找需要一次对每个节点进行二分查找,直至找到或返回null。通常,可以引入布朗过滤器等方式加速查找。



B-树的写入、删除时要进行分裂、合并、转移等操作,越是非顺序的插入就越容易碰到这些高性能消耗的操作。
应用场景:
一般B-树常常作为磁盘的查找的数据结构使用。
一般磁盘为了减少寻道时间,往往会进行预读,一次读入1个或多个page的数据。我们只要将B-树的每个节点控制在一个page大小,就可以保证,磁盘一次的查找只需要一次IO。一个page大小一般在4k,可以存储不少的数据,假设一个节点存储数据量为100,深度为3的B-树,即可保存100w数据量(100*100*100),而100的数据一般用不了4k的存储空间。
当然,这里节点中存储的东西主要包括data和指针,指针大小是固定的,而数据有大有小。只要控制好每个数据块的大小,就可以提高B-树的性能。
另外,一般情况下非叶子节点占用空间一般较小,上面的例子中,非叶子节点数据量只有1w,完全可以缓存至内存中,这点也是在实际数据库实现中常常使用到的优化。

B+树:
B+树完全是对B-树的工程级优化,非叶子节点不在存储data,只有根节点才存储数据。最大程度的加大了单个page中指针的个数,增加数的度。减少了树的层次。
另外相比较于B-树,其key的个数变为指针个数的2d个。
应用场景:
实际在数据库系统中使用时,往往每个叶子节点都会存储一个其相邻节点的一个指针,用来在范围查找时有更好的性能。


  • 大小: 9.2 KB
  • 大小: 18 KB
  • 大小: 22.5 KB
分享到:
评论

相关推荐

    树的存储结构、森林及与二叉树的转换

    ### 树的存储结构 ...本文详细介绍了几种常见的树的存储结构及其特点,并探讨了森林与二叉树之间的转换方法。通过不同的存储结构和转换方法,我们可以在不同的应用场景中灵活地使用树这一重要的数据结构。

    一种改进的基于数据库的树存储策略(树转二叉树)

    ### 一种改进的基于数据库的树存储策略(树转二叉树) #### 概述 在计算机科学领域中,树形数据结构作为一种重要的非线性数据结构,在多种应用场景中发挥着关键作用。然而,如何有效地在关系数据库中存储树形结构...

    树状数据(多叉树)在数据库中存储的示例源码

    本文将围绕"树状数据(多叉树)在数据库中存储的示例源码"这一主题,详细探讨相关知识点。 首先,我们来看数据表的设计。为了存储多叉树,我们通常会创建一个包含以下字段的表格: 1. `id`:每个节点的唯一标识符...

    B树数据存储结构介绍

    B树数据存储结构介绍 看完就就明白了。在此分享

    基于顺序存储实现的多叉树容器

    多叉树与二叉树类似,但每个节点可以有超过两个子节点。这种数据结构在处理如文件系统、词法分析或表示复杂关系时特别有用。顺序存储的多叉树则将所有节点存储在一个连续的内存区域,便于访问和操作。 在C++中,...

    数据结构 树的存储结构

    通过这段代码,我们可以学习到关于树的基本操作,包括树的存储结构、树的遍历以及计算树的一些属性,这些都是数据结构中非常基础且重要的概念,对理解和实现复杂的算法有着至关重要的作用。同时,C语言的使用也展示...

    B+树(利用文件实现)

    5. **B+树与B树的区别** - B树的每个节点都可能包含数据,而B+树的数据只存在于叶子节点。 - B+树的叶子节点之间有链指针,便于全序遍历,而B树没有这个特性。 - B+树对磁盘I/O的优化更彻底,适合大容量数据存储...

    《数据结构》5.3树的存储结构

    在本节《数据结构》5.3树的存储结构中,首先介绍了树的数据存储结构的相关概念。树作为一种非线性数据结构,其数据存储方式有别于一般的线性结构,主要通过以下几种方法实现: 1. 顺序存储结构:顺序存储结构通常是...

    求采用链式存储结构存储的二叉树的树

    链式存储结构二叉树的树高计算 本实验的目的是为了计算采用链式存储结构存储的二叉树的树高。我们将使用C++语言来编写程序,实现该功能。 一、实验设计 在设计思路上,我们首先构造一棵树,根据节点值判断操作左...

    树的实现--利用二叉链表(孩子-兄弟)存储结构

    在C语言中,实现树的存储结构有多种方法,其中一种常见的方式是使用二叉链表,即“孩子-兄弟”存储结构。这种结构允许我们高效地表示和操作树中的节点,特别适用于那些节点具有多个子节点的情况。 “孩子-兄弟”...

    关系数据库表存储树形结构的方法

    关系数据库表存储树形结构的方法 关系数据库是一种用于存储、检索和操作数据的系统,其核心是结构化的数据表。树形结构是计算机科学中常见且重要的非线性结构,广泛应用于模拟具有层次关系的数据,例如组织结构、...

    赫夫曼树和赫夫曼编码的存储表示

    ### 赫夫曼树和赫夫曼编码的存储表示 #### 一、赫夫曼树简介 赫夫曼树(Huffman Tree),又称最优二叉树,是一种带权路径长度最短的二叉树。在数据压缩领域,赫夫曼树被广泛应用于构建高效的编码方案,特别是无损...

    Java中树的存储结构实现示例代码

    在树的存储结构中,需要记录树中节点与节点之间的父子关系,可以使用parent域来记录该节点的父节点。同时,需要记录树的节点数,可以使用 nodeNums 变量来记录树的节点数。 在 Java 中,可以使用 TreeParent 类来...

    哈夫曼树与哈夫曼编码

    哈夫曼树与哈夫曼编码是数据结构和算法领域中的一个重要概念,广泛应用于数据压缩、文本编码以及优先队列等场景。哈夫曼编码是一种特殊的前缀编码方法,能够为字符提供一种高效的二进制表示,使得频繁出现的字符具有...

    用顺序和二叉链表作存储结构实现二叉排序树

    "用顺序和二叉链表作存储结构实现二叉排序树" 本课程设计旨在使用顺序和二叉链表作为存储结构来实现二叉排序树。二叉排序树是一种重要的数据结构,它广泛应用于计算机科学和技术领域。通过本课程设计,我们将学习...

    树与二叉树_习题

    在计算机科学中,树与二叉树是两种重要的数据结构,它们在算法设计、数据库管理、编译原理等领域有着广泛的应用。本节我们将深入探讨树与二叉树的相关习题和知识点。 首先,我们来看一个关于满二叉树的问题。一棵...

    算法-理论基础- 树- 树的存储结构(包含源程序).rar

    这些代码可以帮助读者理解如何在实际编程中创建和操作树结构,通过阅读和运行这些代码,可以加深对树存储的理解,并学习到如何解决实际问题。 总之,学习树的存储结构对于理解和应用各种算法至关重要,包括搜索、...

    四叉树算法的C#实现

    这种分治策略使得四叉树成为存储和查询大量点或矩形对象的有效工具。 在C#中实现四叉树,通常会包含三个核心类:`QuadTree`、`QuadTreeNode`和`QuadNodeItem`。下面将分别介绍这些类的功能和重要知识点。 1. `...

Global site tag (gtag.js) - Google Analytics