n-1
遍历树的成本是n
节点的数量。
这是真的,因为每棵树都有精确的n-1
边——并且您需要使用所有边才能访问所有节点。
确切地说,已知接下来的 3 个语句对于具有节点的图是等效的: T
n
- T 是一棵树(无环连接)
- T 是连通的并且有 n-1 条边
- T 没有环,有 n-1 条边
从上面我们可以得出结论,在一棵树中,为了到达所有节点,我们必须使用所有边(因为没有循环,所以没有冗余边)——而且确实有n-1
这些。
编辑:
从您的示例看来,您似乎也在计算从每个边缘返回的时间(即某些边缘被计算两次)。
那么,在这种情况下,最佳解决方案将是:
cost = (n-1)*2 - height
解释/证明指南:
树中恰好
有边。n-1
除了从根到最深节点的那些之外,它们中的每一个都被遍历了两次。
您必须准确地使用每条边(除了提到的)两次,因为除了最后一个分支 - 您从每个节点返回。
由于height
最后一个分支中恰好有边,因此您总共得到cost = (n-1)*2 - height
请注意,它与您得到的基本相同:
height + 2*(n-1-height) = height + 2(n-1) -2height = 2(n-1) - height