为什么只将数据存储在平衡二叉搜索树的叶节点中?

2023-11-27

我买了一本关于计算几何的好小书。在到处阅读时,我经常偶然发现这种特殊的二叉搜索树的使用。这些树是平衡的,应该只在叶节点中存储数据,而内部节点应该只存储引导搜索到叶节点的值。

下图显示了该树的示例(其中叶子是矩形,内部节点是圆形)。

illustration of a binary search tree

我有两个问题:

  1. 内部节点不存储数据有什么好处?

  2. 出于学习的目的,我想实现这样一棵树。因此,我认为使用AVL树作为基础可能是一个好主意,但是这是一个好主意吗?

任何类型的有用资源都是非常受欢迎的。


内部节点不存储数据有什么好处?

有些树数据结构在设计上要求内部节点中不存储任何数据,例如哈夫曼码树 and B+ trees。对于哈夫曼树,要求没有两个叶子具有相同的前缀(即到节点“A”的路径是 101,而到节点“B”的路径是 10)。就 B+ 树而言,这是因为它针对块搜索进行了优化(这也意味着每个内部节点都有很多子节点,并且树通常只有几层深)。

出于学习的目的,我想实现这样一棵树。因此,我认为使用AVL树作为基础可能是一个好主意,但是这是一个好主意吗?

当然! AVL 树并不是极其复杂,因此它是学习的良好候选者。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么只将数据存储在平衡二叉搜索树的叶节点中? 的相关文章

  • 从三点求圆心的算法是什么?

    我在圆的圆周上有三个点 pt A A x A y pt B B x B y pt C C x C y 如何计算圆心 在Processing Java 中实现它 我找到了答案并实施了一个可行的解决方案 pt circleCenter pt A
  • Delphi 5 的哈希表实现 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 您知道 Delphi 5 的良好且免费的哈希表实现吗 我需要在哈希表中组织大量数据 并且我有点担心在网
  • 解释这段代码的工作原理;子进程如何返回值以及在哪里返回值?

    我不明白子进程如何返回该值以及返回给谁 输出为 6 7 问题来源 http www cs utexas edu mwalfish classes s11 cs372h hw sol1 html http www cs utexas edu
  • std::map 和二叉搜索树

    我读过 std map 是使用二叉搜索树数据结构实现的 BST 是一种顺序数据结构 类似于数组中的元素 它将元素存储在 BST 节点中并按其顺序维护元素 例如如果元素小于节点 则将其存储在节点的左侧 如果元素大于节点 则将其存储在节点的右侧
  • 公式的后序遍历

    在数据结构中 我将按顺序转换和预排序公式转换为树 不过 我不太擅长后期订购 对于给定的公式x y z a b c 我想出了 divide x c y z a b 在大多数情况下 这似乎很合适 除了左子树中的 是牌组中的小丑 在后序遍历中 最
  • 处理大数据二进制文件

    我正在处理包含原始数据的大型二进制文件 每个大约 2 GB 这些文件具有明确定义的结构 其中每个文件都是一个数组events 每个事件都是一个数组data banks Each event and data bank有一个结构 header
  • 布隆过滤器的使用

    我正在努力理解布隆过滤器的用处 我了解了它的底层逻辑 空间压缩 快速查找 误报等 我只是不能将这个概念应用到现实生活中 因为它是有益的 一种常见的应用是在 Web 缓存中使用布隆过滤器 我们使用布隆过滤器来确定给定的 URL 是否在缓存中
  • 添加到列表时有没有办法避免循环?

    我想知道这样的代码 List
  • 计算机如何评估巨大的数字?

    例如 如果我输入一个值 1234567 98787878 Wolfram Alpha 可以为我提供许多细节 这包括小数近似 总长度 最后一位数字等等 您如何评估如此大的数字 据我了解 编程语言必须具有特殊的数据类型才能存储数字 更不用说将其
  • 给定一个零索引数组 & 该数组的平衡索引[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 给出一个由 N 个整数组成的零索引数组 A 该数组的平衡索引是任何整数 P 满足 0 P 例如 考虑以下由 N 8 个元素组成的数组
  • 如何找到给定顶点的所有多边形?

    我有一个顶点列表 并且我知道它们之间的连接 我试图找到顶点的所有多边形形状 这些多边形形状不应重叠 我做了一些研究 我认为如果我可以顺时针 或逆时针 没有区别 遍历顶点 我可以检测多边形形状 因此 我寻找顺时针遍历顶点的解决方案 我发现了一
  • 为什么路径压缩不会改变 UnionFind 中的排名?

    我正在研究 UnionFind 的实现 并从这里进行排序和路径压缩http en wikipedia org wiki Disjoint set data struct Disjoint set forests http en wikipe
  • Java 中类似 HashMap 的可排序数据结构?

    Java 中是否有某种类似于 HashMap 的数据结构 可以按键或值排序 在 PHP 中 您可以拥有可排序的关联数组 Java中有这样的东西吗 HashMaps 几乎按照定义是未排序的 一个好的哈希函数会产生看似随机的密钥分布 如果你想使
  • 动态前缀和

    是否有任何数据结构能够返回数组的前缀和 1 更新元素以及向数组插入 删除元素 所有这些都在 O log n 内 1 前缀和 是从第一个元素到给定索引的所有元素的总和 例如 给定非负整数数组8 1 10 7前三个元素的前缀和是19 8 1 1
  • JAVA实现AVL树

    我想用Java实现一个AVL树 这是我到目前为止所拥有的 public class AVLNode private int size The size of the tree private int height The height of
  • 我的 Bitset 的大小是多少?

    我想存储System currentTimeInMillis以尽可能小的空间存储在内存中 因为我必须将数百万个它们存储在内存中 我把它转换为binaryString这给了我41 bits 这是我的程序 public class BitSet
  • 修订:算法和数据结构

    我需要通过修订来构建和处理数据的想法 例如 我有一个对象数据库 例如汽车 每个对象都有许多属性 这些属性可以是任意的 因此没有一个固定的模式来描述这些对象 这些对象可能保存为键值对 现在我需要更改对象的属性 我不想完全重写它 我希望能够返回
  • 如何为多边形创建内部螺旋?

    对于任何形状 我如何在其内部创建类似形状的螺旋 这与边界 使用 Minkowski 和 类似 尽管它会是相同形状的螺旋 而不是在形状内部创建相同的形状 我找到了这个 http www cis upenn edu cis110 13su le
  • Trie 数据结构 - Java [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 是否有任何库或文档 链接提供了在 java 中实现 Trie 数据结构的更多信息 任何帮助都会很棒 Thanks 你可以阅读Java特里树
  • 良好的类似 STL 的 C 库 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 对于具有向量 双端队列 堆栈 哈希图 树形图 集合等数据结构的 C 语言来说 有哪些好的库 请使用纯 C 并且与平台无关 The Glib

随机推荐

  • 如何向 DataReader 添加列

    我的目标是从数据源检索数据 向其中添加一些元数据并将其插入到另一个目标 目标的架构比源多四列 计算列 我在用SQL批量复制 这需要一个具有所有列 包括计算出的 4 列 的阅读器 有没有办法手动将列添加到 DataReader 中 或者如果不
  • 将 MVC 迷你分析器计时纳入异步任务

    我在页面内有一个长时间运行的 SQL 查询 我通过使用异步任务加速了该查询 using System Threading Tasks var asyncTask new Task
  • zsh 中的 IFS 行为与 bash 不同

    foo local lines ls l local IFS n for line in lines do echo line done 在 zsh 中 循环只执行一次 因为 for 的输出ls l命令不会被新行分割 整个文本块都会传递到
  • 数组元素算作公共初始序列吗?

    有点相关我之前的问题 数组的元素算作公共初始序列吗 struct arr4 int arr 4 struct arr2 int arr 2 union U arr4 arr4 arr2 arr2 U u u arr4 arr 0 0 wri
  • Windows 代码页与标准 C/C++ 文件名交互?

    客户抱怨我们的代码过去常常写入文件名中包含日语字符的文件 但现在不再适用于所有情况 我们一直只是使用良好的旧 char 字符串来表示文件名 所以它曾经起作用让我有点震惊 而且我们没有做任何我知道应该让它停止工作的事情 我让他们向我发送了一个
  • HEAD 响应是否比 GET 更快?

    我目前正在使用 GET 获取有关文件的信息 如果使用 HEAD 请求重写它会更快吗 因为我在第一次响应后关闭了连接 HEAD 响应仅包含 HTTP 标头 但不包含正文 如果正文中不使用通常在 GET 响应中传输的任何信息 则仅使用 HEAD
  • 为什么多次调用 setTimeout() 会导致如此大的延迟?

    我有一个复杂的动画序列 涉及 JavaScript 中的淡入淡出和过渡 在这个由四个元素同时变化的序列组成的过程中 setTimeout用于每个元素 在 Internet Explorer 9 中进行测试 动画以实时速度运行 应该需要 1
  • 检查字符串是否包含空格

    我正在尝试检查字符串中是否有空格 以下内容对我不起作用 if skpwords contains lcase query And Mid query InStrRev query then end if 检查字符串是否包含字符 或子字符串
  • Rails:激活 SSL 支持会让 Chrome 感到困惑

    Rails 应用程序有一个很好的配置选项 config force ssl true 然而 似乎仅仅将其设置为 true 并不能让 HTTPS 连接正常工作 更重要的是 在尝试 但失败 连接到之后https 本地主机 3000对于 Chro
  • Iterator.remove() IllegalStateException

    在下面的代码中 我有一个 try catch 块 它尝试使用 Iterator 从 Vector 中删除元素 我创建了自己的课程QueueExtendingVect延伸Vector并实施Iterator 变量qev1是类的一个实例Queue
  • 如何将 IEnumerable> 转换为 IObservable

    是否有内置方法将 IEnumerable gt 转换为 IObservable 顺序并不重要 重要的是我得到的东西 尽管最好是在它们完成的时候 如果它还不存在 那么实现它的好方法是什么 我相信这会起作用 tasks Select t gt
  • 读/写二进制文件

    我只是想从二进制文件中读取 写入 我一直在关注this教程 它可以工作 除了它似乎正在将内容写入 txt 文件 我在测试时将文件命名为test bin 但记事本可以打开它并正确显示它 所以我认为它实际上不是一个二进制文件 我已经告诉它它是一
  • kotlin 如何使 setOnClickListener 接受函数作为参数

    在 kotlin 中 我们可以使用setOnClickListener 像这样 view setOnClickListener println Hello 但是如果我定义自己的接口 我只能传递匿名对象 如下所示 obj setMyListe
  • 如何在Python中的文件中写入新行

    我有一个这样的文件 word number word number 我只想保留 保留这些单词 再次换行中的一个单词 word word 到目前为止我的代码 f open new file txt w with open initial fi
  • 查找 SQL 中的所有整数间隙

    我有一个数据库 用于存储我从外部源获取的游戏不同比赛的信息 由于一些问题 数据库中偶尔会出现空白 可能缺少 1 个 ID 到几百个 ID 我想让程序提取丢失游戏的数据 但我需要先获取该列表 以下是表格的格式 id pk identity G
  • 更改“多选”下拉框中所选项目的背景颜色? [复制]

    这个问题在这里已经有答案了 我想为多选下拉框中的所选项目赋予黄色 选择后默认背景是灰色的 如何执行此操作HTML CSS 这个问题是关于多选但对于单选请参考 相关但不重复 如何将背景颜色应用于选定的选项 我们可以简单地借助以下 CSS 来完
  • Laravel 5.1 视图未找到

    这似乎是 Laravel 中时不时出现的一个问题 我正在编写一个 CRUD 控制器 以配合它 但是经过测试 我得到了InvalidArgumentException in FileViewFinder php line 137 View b
  • 如何在 Firebase 托管中实现 .htaccess 配置?

    我的域中有一个 htaccess 配置 允许我的应用程序与路由完美配合 当您刷新 Angular 2 应用程序无法解析路线时 它可以避免错误 我当前的配置是这个
  • 如何在 PyQt 中使用 pdf.js 查看器渲染 PDF?

    我尝试在我的项目中添加 pdf js 查看器文件 它可以在 Chrome Mozilla Safari 等浏览器中运行 但它不会加载 node webkit 和 PyQt webkit 中的某些页面 我正在尝试使用 iframe 加载文件
  • 为什么只将数据存储在平衡二叉搜索树的叶节点中?

    我买了一本关于计算几何的好小书 在到处阅读时 我经常偶然发现这种特殊的二叉搜索树的使用 这些树是平衡的 应该只在叶节点中存储数据 而内部节点应该只存储引导搜索到叶节点的值 下图显示了该树的示例 其中叶子是矩形 内部节点是圆形 我有两个问题