【发布时间】:2017-03-19 05:52:56
【问题描述】:
我有一个带有n 节点的二叉树。这棵树不一定是平衡的。
对于树的每个节点,我将其左子树的节点总数倒数为nL,然后我将其右子树的节点总数倒数为nR .然后我计算min(nL,nR),然后将最小值作为标签分配给节点。我重复这个过程,为树的所有节点生成适当的标签。
现在我打算计算 sum of all the tags 的大 O。我的意思是,我很想知道sum of tags 是在 O(nlog(n)) 还是 O(n) 还是 O(n2)
在最不平衡的情况下,二叉树只是一个如下图的日志列表。在这种情况下,我认为sum of tags 将是0,因此大 O 将是 O(0)
在完美二叉树的情况下,根节点的标签可能是 20(n/20+1) 并且在下一级,即根的左右孩子,标签的总和可能是 21(n/21+1) 并且对于完美二叉树的第 i 层,标签的总和可能是 2i(n/2i+1)
在第 i 个级别,标签的总和可能变为 2i(n/2i+1)=n/2 因此看起来有些标签每个级别可能是 n/2 并且因为完美二进制三的总高度为 log2n 因此标签的总和可能是 (n/2)log2n 这意味着对于一棵完美的二叉树,标签总和的大 O 可能是 O(nlog2n)
现在我不确定我的上述计算是否正确。我想知道是否有人可以提供帮助。
【问题讨论】:
-
交叉发布:cs.stackexchange.com/q/71727/755,stackoverflow.com/q/42883388/781723。请do not post the same question on multiple sites。每个社区都应该诚实地回答问题,而不会浪费任何人的时间。
-
@D.W.好的,谢谢。
标签: algorithm data-structures tree binary-tree