【问题标题】:What is the minimum cost to traverse a binary Tree遍历二叉树的最低成本是多少
【发布时间】:2013-01-05 09:18:55
【问题描述】:

我想以最低成本遍历二叉树,其中每条边的成本为 1。 当访问树的每个节点时,遍历就完成了。

例如,遍历后续树的最小代价是 13。

       *
      / \
     *   *
    / \   \
   *   *   *
  /   /     \
 *   *       *

遍历后续树的最小代价是 12。

        *
       / \
      *   *
     / \   \
    *   *   *
   /     \
  *       *
 /
*

【问题讨论】:

    标签: algorithm graph tree graph-algorithm tree-traversal


    【解决方案1】:

    遍历树的成本是n-1,其中n是节点数。

    这是真的,因为每棵树都有确切的 n-1 边 - 您需要使用所有边才能访问所有节点。


    确切地说,已知接下来的 3 个语句对于 graph Tn 节点是等效的:

    1. T 是一棵树(无环连接)
    2. T 是连通的并且有 n-1 条边
    3. 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
    

    【讨论】:

      猜你喜欢
      • 2012-01-01
      • 2022-11-11
      • 1970-01-01
      • 2017-09-16
      • 1970-01-01
      • 1970-01-01
      • 2021-11-20
      • 1970-01-01
      相关资源
      最近更新 更多