把乙個無向圖想象成一棵樹,每個結點都可以是樹的根節點,然後找到最小的樹的高度所對應的根結點。
開始把這個題想得有點簡單,我用dfs計算出了每個點作為根節點時的樹的高度,然後用當前最小高度來剪枝。然而超時了,後來想想確實dfs的時間複雜度太高。後來在網上看到大神的思路,利用了拓撲排序的思想,簡單易懂,複雜度低。拓撲排序的詳解:
本題的解法思路是:設立乙個點集,儲存當前圖中度為1的點,即樹的葉子結點。然後將這些結點從圖中刪去,此時,有可能會生成一些新的葉子結點,那麼再將這些新的葉子結點加入點集中。不斷重複這個過程,直到圖中的剩下的點不超過3個。為什麼是3個呢?舉個例子,假設乙個圖有兩個點,用一條邊連起來,那麼返回的結果就是這兩個點。但如果圖中有三個點,用兩條邊連起來,那麼返回的結果就是中間的那乙個點。**如下:
class solution
};
Leetcode 310 最小高度樹
對於乙個具有樹特徵的無向圖,我們可選擇任何乙個節點作為根。圖因此可以成為樹,在所有可能的樹中,具有最小高度的樹被稱為最小高度樹。給出這樣的乙個圖,寫出乙個函式找到所有的最小高度樹並返回他們的根節點。格式該圖包含 n 個節點,標記為 0 到 n 1。給定數字 n 和乙個無向邊 edges 列表 每乙個...
leetcode 310 最小高度樹
對於乙個具有樹特徵的無向圖,我們可選擇任何乙個節點作為根。圖因此可以成為樹,在所有可能的樹中,具有最小高度的樹被稱為最小高度樹。給出這樣的乙個圖,寫出乙個函式找到所有的最小高度樹並返回他們的根節點。格式該圖包含 n 個節點,標記為 0 到 n 1。給定數字 n 和乙個無向邊 edges 列表 每乙個...
leetcode310 最小高度樹
對於乙個具有樹特徵的無向圖,我們可選擇任何乙個節點作為根。圖因此可以成為樹,在所有可能的樹中,具有最小高度的樹被稱為最小高度樹。給出這樣的乙個圖,寫出乙個函式找到所有的最小高度樹並返回他們的根節點。格式該圖包含 n 個節點,標記為 0 到 n 1。給定數字 n 和乙個無向邊 edges 列表 每乙個...