最近,我在二叉树上遇到了这个问题:
给定一些任意非平衡树,最大的是确定它是否为单值(所有元素都是相同的值)。
- 醇>
在上述情况下会导致最大的O-complex,平衡 树或线性树?
这是我对这个问题的回答:
要确定树是否是单一的,我们必须检查每个节点。因此,复杂性是O(n)。
如果它们具有相同数量的节点,它是线性树还是平衡树,则将进行相同数量的比较。因此,复杂性将是相同的。
这是对的吗?
答案 0 :(得分:2)
如果给出任意二叉树,在最坏的情况下,您必须检查所有节点以确定它们是否具有相同的值。你可以在这里使用一个简单的对抗论证 - 如果你的算法没有查看所有的值,因为树中任何不同的值之间没有关系,对手可以给你一棵树n - 1个值都是相同的。如果你没有查看最后一个值,那么攻击者可以通过将该值设置为与算法相反的值来强制算法错误。
另一方面,如果您正在谈论二进制 搜索 树,那么您可以在时间O(h)中解决此问题,其中h是树的高度。具体来说,只需查看第一个和最后一个值,看看它们是否相同。如果是这样,树中的所有中间值必须相同。如果他们不是,那么您已经目睹了两个不同的价值观。这将在完美平衡树上的时间O(log n)和退化链表上的O(n)上运行。我怀疑这可能是原始问题的问题,因为它比一般的二叉树案例(至少在我看来)更有趣。
希望这有帮助!