Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.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
Algorithm 创建BST的时间复杂性_Algorithm_Time Complexity_Binary Search Tree - Fatal编程技术网

Algorithm 创建BST的时间复杂性

Algorithm 创建BST的时间复杂性,algorithm,time-complexity,binary-search-tree,Algorithm,Time Complexity,Binary Search Tree,与n节点的二进制堆创建一样,考虑到在任意高度h都会有atmax,其时间复杂度为O(n)而不是nlog(n) 具有的节点将需要atmost O(h)时间进行重设 在类似的线路上,我想证明BST的创建。为此,我使用了一个事实,即在任何深度d上都可能有atmost 2^d节点,这将在最大O(d)时间插入。所以这个等式是 这个方程为什么会导致BST创建的nlog(n)-预期时间复杂度或O(n^2)-最坏情况复杂度。请建议一种方法,如何进一步从上面的等式开始。最后,我解决了这个问题 设T=log(N

与n节点的二进制堆创建一样,考虑到在任意高度h都会有atmax,其时间复杂度为O(n)而不是nlog(n)

具有的节点将需要atmost O(h)时间进行重设

在类似的线路上,我想证明BST的创建。为此,我使用了一个事实,即在任何深度d上都可能有atmost 2^d节点,这将在最大O(d)时间插入。所以这个等式是


这个方程为什么会导致BST创建的nlog(n)-预期时间复杂度或O(n^2)-最坏情况复杂度。请建议一种方法,如何进一步从上面的等式开始。

最后,我解决了这个问题

设T=log(N)即2^T=N(节点数)…..(1)
问题变成了(2^d*d)的和,其中d的范围从o到T

G(T) = 0*2^0 + 1*2^1 + 2*2^2 + ..... + T*2^T.
2G(T) = 0*2^1 + 1*2^2 + ..... +(T-1)*2^T + T*2^(T+1)
2G(T)-G(T) = 0 - 2^1 -2^2 - ..... - 2^T + 2T*2^T
G(T) = - 2^(T+1)-2 + 2T*2^T G(T) = 2( (T-1)2^T +1 ) which is = 2( (log(N)-1)N +1 )...........from (1) G(T)=0*2^0+1*2^1+2*2^2+…+T*2^T.
2G(T)=0*2^1+1*2^2++(T-1)*2^T+T*2^(T+1)
2G(T)-G(T)=0-2^1-2^2-2^T+2T*2^T
G(T)=-2^(T+1)-2+2T*2^T G(T)=2((T-1)2^T+1) 从(1)中取=2((对数(N)-1)N+1)
因此,上界为N log(N)(考虑平衡树)

您的数学不正确。你的计算结果是错误的,因为大多数节点插入的深度更大。二进制堆的创建是O(N),因为使用了自底向上的构造,而不是插入然后对每个元素进行堆化。如果必须独立插入每个节点,则为O(N log N)。此处有何错误,请说明,对于N节点bst,至少需要楼层(log(N))-高度,在每个深度d处,它将有2^d节点,考虑到平衡bst的15个节点高度和出来的楼层(log(15))ie 3,在级别3处,它将有2^3个节点,即8个节点。对于插入场景,所有8个节点都必须向下移动到其最后一级,从而产生2^d*h类方程。如果这是错误的,我在这里遗漏了什么?h,d和n是相关的。这样做更容易:一半的节点将在深度log(n)处插入,因此如果插入时间与深度成比例,则总插入时间>=O(0.5n log n)>=O(n log n)。类似地,所有节点都将插入深度,我知道,如果我认为这样很容易将复杂性可视化为nlog(n),但上面方程的展开看起来应该比nlog(n)更大。这就是我在这里问的原因。