[英]What is the minimum cost to traverse a binary Tree
我想以最小的成本遍歷二叉樹,其中每條邊的成本為1。 訪問樹的每個節點時遍歷完成。
例如,遍歷后繼樹的最小成本為13。
*
/ \
* *
/ \ \
* * *
/ / \
* * *
遍歷后繼樹的最低成本為12。
*
/ \
* *
/ \ \
* * *
/ \
* *
/
*
遍歷樹的成本為n-1
,其中n
是節點數。
這是正確的,因為每棵樹都有正好為n-1
邊-您需要使用所有邊才能訪問所有節點。
確切地說,已知接下來的3條語句對於具有n
節點的圖 T
是等效的:
從上面我們可以得出結論,在一棵樹中,為了到達所有節點,我們必須使用所有邊(因為沒有循環,所以沒有多余的邊)-恰好有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.