簡體   English   中英

遍歷二叉樹的最低成本是多少

[英]What is the minimum cost to traverse a binary Tree

我想以最小的成本遍歷二叉樹,其中每條邊的成本為1。 訪問樹的每個節點時遍歷完成。

例如,遍歷后繼樹的最小成本為13。

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

遍歷后繼樹的最低成本為12。

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

遍歷樹的成本為n-1 ,其中n是節點數。

這是正確的,因為每棵樹都有正好為n-1邊-您需要使用所有邊才能訪問所有節點。


確切地說,已知接下來的3條語句對於具有n節點的 T是等效的:

  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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM