【问题标题】:Why Binary search tree?为什么选择二叉搜索树?
【发布时间】:2015-02-16 08:12:15
【问题描述】:

为什么人们使用二叉搜索树? 为什么不简单地对从最低到最高排序的数组进行二进制搜索? 对我来说,插入/删除成本似乎是一样的,为什么要让 max/min heapify 等过程复杂化?

仅仅是因为数据结构中需要随机访问吗?

【问题讨论】:

  • 你没有在这里给出 any 上下文 - 不同的数据结构用于具有不同要求的不同情况。你说的是什么情况?

标签: arrays binary-search-tree


【解决方案1】:

插入成本不一样。如果你想在数组中间插入一个元素,你必须将所有元素移动到插入元素的右侧一个位置,这样做的努力与数组的大小成正比:O(N)。使用自平衡二叉树,插入的复杂度要低得多:O(ln(N))。

【讨论】:

  • 谢谢!我知道一个 BBST 或者一个普通的 BST 是以数组的形式呈现的,但是因为它的属性,我们可以按照你说的计算出在哪个单元格插入新元素(稍后修复属性),成本最低(最坏情况 O(ln(N)) )。但是,据我了解,BST 是一个数组,而不是一个列表。这是否意味着一个大的空数组已经准备好让一棵树在里面生长,但是当它变得太大并且不适合时 - 我们必须将它复制到一个新的更大的数组(其中有许多额外的空格进一步增长) ?谢谢
  • 哦,我想我明白了,要到达 BBST 中的最低元素,我必须 按指针移动 log n 次。我无法使用索引访问它(即使我们谈论的是简单的二进制堆)@pentadecagon
猜你喜欢
  • 1970-01-01
  • 2018-09-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-08
  • 2014-09-18
  • 1970-01-01
相关资源
最近更新 更多