【问题标题】:What is the space complexity of BST?BST的空间复杂度是多少?
【发布时间】:2020-06-26 23:12:12
【问题描述】:
function validateBst(root, min=-Infinity, max=Infinity) { 
  if (!root) return true;
  if (root.value <= min || root.value > max) return false;
  return validateBst(root.left, min, root.value) && validateBst(root.right,root.value, max)
}  

谁能帮我澄清一下...这个函数的空间复杂度是 O(log(n)) 还是 O(d) - 其中 d 是 BST 树的深度?

...我可以将它们归类为同一事物吗?

【问题讨论】:

标签: javascript time-complexity big-o binary-search-tree space-complexity


【解决方案1】:

树本身的空间复杂度与树中的节点数成正比。因此,O(N)

函数的空间复杂度validateBst 是为递归搜索整个树而分配的最大“堆栈”内存(函数调用开销)。

堆栈的最大数量本质上是从根节点到最下方的叶节点的树的高度。 在一般情况下(和最佳情况下) - 假设一棵树的平衡相当好,那么高度大约为log₂ N。因此,空间复杂度将是O(log₂ N) 或简单的O(lg N)最坏的情况 场景中,树只是一个排序的链表,随着值的递增向右分支,然后O(N) 是最坏的情况。

【讨论】:

  • 明白了,如果树不平衡,那么说O(log₂ N) 是不正确的。
  • 算法通常用它的平均情况来表示。最好用最好、平均和最差的术语来描述算法的大 O。但如果您只需要给出一个值,只需引用平均情况即可。
猜你喜欢
  • 1970-01-01
  • 2014-01-01
  • 2015-06-06
  • 2020-03-10
  • 2018-07-23
  • 2011-09-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多