发布
社区首页 >问答首页 >对于不平衡树的所有路径和问题,最坏的空间复杂度是多少?

对于不平衡树的所有路径和问题,最坏的空间复杂度是多少?
EN

Stack Overflow用户
提问于 2021-01-28 16:14:47
回答 1查看 418关注 0票数 3

下面是在educative.io上所述的问题陈述。

给出一棵二叉树和一个数字‘S’,找出从根到叶的所有路径,使得每个路径的所有节点值之和等于‘S’。

我理解这个问题的解决方案和时间复杂性部分。我的困惑在于最糟糕的空间复杂性。对于平衡二叉树,计算了输出数组的空间复杂度,得出了不平衡二叉树的空间复杂度相同的结论。

这里有七个节点(即N= 7)。因为对于二叉树来说,只有一条路可以到达任何一个叶节点,所以我们可以很容易地说,二叉树中的总根到叶路径不能超过叶子的数量。正如我们所知道的,二叉树中不可能有超过(N+1)/2的叶子,因此allPaths中元素的最大数量将是O((N+1)/2) = O(N)。现在,这些路径中的每一条都可以有许多节点。对于平衡的二叉树(如上面所示),每个叶节点都将处于最大深度。众所周知,平衡二叉树的深度(或高度)是O( logN ),我们最多可以说,每条路径中都有logN节点。这意味着allPaths列表的总大小为O(N*logN)。如果树不平衡,我们仍然会有同样的最坏的空间复杂性。

通过上述讨论,我们可以得出,我们的算法的总体空间复杂度为O(N*logN)。

此外,根据上述讨论,因为对于每个叶节点,在最坏的情况下,我们必须复制log(N)节点来存储它的路径,因此算法的时间复杂度也将是O(N*logN)。

我画了几棵7,8,9的二叉树,.节点和我能够创建不平衡的树,这将需要更多的空间在输出数组比它的平衡树对应。此外,这种差异并不是由一个恒定的值增长的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-28 18:16:13

这对你很好,实际上是反复检查推理,而不是相信它是正确的!

平衡二叉树的分析方法对不平衡二叉树也是正确的。但不平衡可以有深度O(N)。因此,最大空间是路径数乘以深度,即O(N) * O(N) = O(N^2)

对于达到最坏情况的不平衡二叉树,我们将创建一棵树,所有这些节点的值都是1的大小为2的幂。前一半的节点是一条直线通向右边。另一半是一个完全平衡的二叉树,从上半部分结束。该树将具有权重为O(N/4)N/2 + log_2(N/2)路径,并且确实需要O(N^2)空间。

我强烈建议向他们指出错误,以便他们纠正错误。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65941029

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档