Algorithm 特殊二叉树,一个棘手的问题?

Algorithm 特殊二叉树,一个棘手的问题?,algorithm,data-structures,graph,tree,binary-tree,Algorithm,Data Structures,Graph,Tree,Binary Tree,我们有一个具有n节点的二叉树。这棵树不一定是平衡的。对于该树的任何节点,如x,我们计算该节点的left和right子树的大小(即:节点数),并将该节点的标签设置为这两个值(right size和left size子树的值)的最小值。如果任何子树有零个节点,则此大小等于0。以下哪项是正确的: 一) 标签总数属于订单O(n log n) 二) 有一棵树,它的标签之和属于orderO(n)。(即:是否可能得到一棵树,其标签的和为O(n)?) 三) 有一棵树,它的标签之和属于orderO(n^2) 我的

我们有一个具有
n
节点的二叉树。这棵树不一定是平衡的。对于该树的任何节点,如
x
,我们计算该节点的
left
right
子树的大小(即:节点数),并将该节点的标签设置为这两个值(right size和left size子树的值)的
最小值。如果任何子树有零个节点,则此大小等于
0
。以下哪项是正确的:

一) 标签总数属于订单
O(n log n)

二) 有一棵树,它的标签之和属于order
O(n)
。(即:是否可能得到一棵树,其标签的和为O(n)?)

三) 有一棵树,它的标签之和属于order
O(n^2)


我的助教说其中两个是真的。我的问题是这些句子,有人能给我描述一下吗?

我猜是1和2

(1)考虑树的高度。高度和节点数n的关系为n=(2^h)-1。根据这个关系,我们可以得出h=logn。现在,让我们来讨论二叉树的每一级中的节点数。一个级别可以拥有的最大节点数为(n/2),这是最后一个级别(在完整的二叉树中,最后一个级别将拥有n/2个节点)。因此,计算最小值的最坏情况是(级别数)*(每个级别中的节点数)=>n/2logn=>O(nlogn)


2.)通过改变树的高度可以得到0(n)的解。例如,若考虑所有节点的一个子集,使得树的高度为0/1,那个么就有可能得到一个O(n)解——对于总级别为2的树,最多可以有三个节点(根、左、右),所以,在这个过程中并没有最小计算。在这种情况下,我们在运行时间中没有额外的logn,结果是O(n)。

对于像您这样的专家@Jerry,这是显而易见的。不适合我。不管怎样,谢谢你试过在纸上画它们吗?还是你只是在猜测?@SaraPhD所有非叶节点在平衡树中至少有1个标签,并且大约有n/2个非叶节点。因此,平衡树中的标签之和至少为n/2,因此可证明不是O(logn)。如果不绘制树,就不应该解决这些问题。我认为这些语句写得很糟糕。他们中的一些人需要Θ而不是O。同样,“有一棵树”在渐近界的上下文中没有意义,我们需要讨论一个无限的树族。也许有反例或证据证明(3),我认为这是一个很好的问题。第二部分的哪一部分没有被忽略?@SaraPhD我试图添加更多信息。希望这有帮助。我们如何确定(3)?@SaraPhD与(1)一起,我是说这需要O(nlogn)时间。因此,对于我来说,我们希望用更糟糕的运行时间来处理相同的问题是没有意义的(O(nlogn)比O(n^2)好)。