我们有一个带有n
个节点的二叉树。这棵树不一定平衡。对于此树的任何节点x
,我们计算此节点的left
和right
子树的大小(即:节点数),并将此节点的标签设置为{ {1}}这两个值(正确大小和左侧大小子树的值)。如果任何子树的节点为零,则此大小等于minimum
。以下哪项为True:
I)标签总数属于订单0
。
II)有一棵树,它的标签总和属于订单O(n log n)
。 (即:是否可以得到一棵树,其标签的总和为O(n)?)
III)有一棵树,它的标签总和属于订单O(n)
。
我的TA说其中两个是真的。我的问题是这些句子,有人可以为我描述一下吗?
答案 0 :(得分:2)
我的猜测是1& 2.
1。)考虑树的高度。节点n的高度和数量具有n =(2 ^ h)-1的关系。从这个关系中,我们可以推导出h = logn。现在,让我们转到二叉树每个级别的节点数。级别可以具有的最大节点数是(n / 2),这是最后一级(在完整二叉树中,最后一级将具有n / 2个节点)。因此,计算最小值的最坏情况是(级别数)*(每个级别中的节点数)=> n / 2logn => O(nlogn)。
2。)通过改变树的高度可以获得0(n)解。例如,如果考虑所有节点的子集使得树的高度为零/一,则可以获得O(n)解决方案 - 对于总水平为二,最多可以有三个节点(根,左,右),因此,这里没有涉及最小计算。在这种情况下,我们没有额外的运行时间登录,我们最终得到O(n)。