一、数据结构解释
B树访问4G内存地址。
B树性质:
- 根节点至少有两个子节点。
- 每个非根、非叶子节点有 k 个子节点,其中 t-1 <= k <= 2t-1。t 是称为最小度数(minimum degree)的参数,决定了B树的节点大小。
- 所有叶子节点都在同一层,并且不存储数据,只存储关键字和指向数据的指针。
- 非叶子节点除了指向子节点的指针外,还存储关键字。
B+树性质:
- 每个非叶子节点最多有n个子节点(n ≥ 2)。
- 每个非叶子节点包含k个关键字,其中 k + 1 个指针指向子节点(k ≥ 1)。
- 所有关键字按照升序排列,对于非叶子节点,关键字对应子树中的最大关键字。
- 所有叶子节点通过链表连接,形成一个有序链表,叶子节点存储实际的数据记录。
- 所有叶子节点没有孩子指针(即为外部节点或终端节点)。
二、背景知识的介绍
内存与磁盘的区别:
-
功能:内存是计算机用于临时存储和快速读写数据的地方。它用于存储当前正在运行的程序、操作系统和数据,以供CPU快速访问。磁盘则用于长期存储大量数据,包括操作系统、应用程序、文件和其他用户数据。
-
访问速度:内存的读写速度非常快,在纳秒级别,因为内存直接连接到CPU。而磁盘的访问速度相比之下较慢,以毫秒或更长时间计算,因为数据需要通过机械部件或芯片来进行读写。
-
持久性:内存中存储的数据是临时存储的,当计算机断电或重新启动时,内存中的数据将丢失。相比之下,磁盘存储是持久的,即使计算机断电或重新启动,数据仍然会保留在磁盘中。
二、为什么内存中数据可以直接访问?但是磁盘中不可以呢?
内存具有随机访问能力和直接寻址的特性。
- **随机访问能力:**内存中的数据存储是以连续的地址区域进行组织的。每个内存单元都有唯一的地址,通过这个地址可以直接定位到所需的数据。这种随机访问的能力使得我们可以以常量时间复杂度 O(1) 的方式读取或写入特定地址的数据。
- **直接寻址:**内存中的数据可以直接通过其物理地址进行寻址。计算机系统使用内存管理单元(Memory Management Unit,MMU)将逻辑地址转换为物理地址。MMU负责将逻辑地址映射到物理地址空间中的相应位置,从而实现对内存中数据的直接寻址。这样,程序可以通过使用逻辑地址来访问内存,而不需要关心具体的物理位置。
磁盘等其他存储介质由于访问速度较慢,不具备直接寻址的能力,需要使用更复杂的机制进行数据读取和写入。 - 物理结构:磁盘是由一系列盘片组成的,每个盘片上都有磁道和扇区。数据存储在扇区中,而要访问特定扇区中的数据,需要通过物理磁头移动到相应的磁道上。这种物理结构导致了磁盘访问速度较慢,与内存相比更加耗时。
- 顺序访问:磁盘的读取和写入是按照物理磁头的位置顺序进行的,而不是根据地址直接寻址。要访问特定扇区中的数据,需要先找到目标磁道,然后等待磁盘旋转将目标扇区转到磁头下方进行读取。这种顺序访问的方式导致了磁盘的访问速度相对较慢,并且无法像内存那样直接定位到所需数据的地址。
- 文件系统管理:磁盘上的数据通常由文件系统进行管理和组织。文件系统使用索引数据结构(如二叉树、哈希表等)来记录文件和目录的位置信息,以便能够快速查找和访问数据。因此,磁盘的数据访问往往需要经过文件系统的解析和索引操作,而不是直接通过地址进行访问。
三、 完全二叉树以及平衡二叉树
- 完全二叉树:叶子节点均在同一层;除了最后一层,其他层的节点都是满的;节点的排列符合从上到下从左到右的排列顺序。
- 平衡二叉树:每个节点的左子树以及右子树高度差不超过1.