Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/464.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript BST的空间复杂性是什么? 函数validateBst(根,min=-Infinity,max=Infinity){ 如果(!root)返回true; if(root.value max)返回false; 返回validateBst(root.left,min,root.value)和&validateBst(root.right,root.value,max) }_Javascript_Time Complexity_Big O_Binary Search Tree_Space Complexity - Fatal编程技术网

Javascript BST的空间复杂性是什么? 函数validateBst(根,min=-Infinity,max=Infinity){ 如果(!root)返回true; if(root.value max)返回false; 返回validateBst(root.left,min,root.value)和&validateBst(root.right,root.value,max) }

Javascript BST的空间复杂性是什么? 函数validateBst(根,min=-Infinity,max=Infinity){ 如果(!root)返回true; if(root.value max)返回false; 返回validateBst(root.left,min,root.value)和&validateBst(root.right,root.value,max) },javascript,time-complexity,big-o,binary-search-tree,space-complexity,Javascript,Time Complexity,Big O,Binary Search Tree,Space Complexity,有人能帮我澄清一下吗…这个函数的空间复杂度是O(log(n))还是O(d)-其中d是BST树的深度 …我可以将它们分类为相同的东西吗?树本身的空间复杂性与树中的节点数成正比。因此,O(N) 函数的空间复杂度,validateBst,是分配给递归搜索整个树的最大“堆栈”内存量(函数调用开销) 堆栈的最大数量实际上是树从根节点到最下面的叶节点的高度在一般情况下(和最佳情况下)-假设一棵树相当平衡,那么高度大约为log₂ N。因此,空间复杂度将是O(log₂ N) 或简单地O(lg N)在最坏情况下场

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


…我可以将它们分类为相同的东西吗?

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

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


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

搜索树的深度与log2 N(数组中的元素数)相同。这可能是因为,好的,所以说
O(log)是不正确的₂ N) 
如果树不平衡。算法通常以其平均情况表示。。最好用最好的、平均的和最差的组合来描述一个算法的big-O。但是如果你只需要给出一个值,就引用平均值。
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)
}