310 最小高度樹 bfs 重點掌握

2021-10-04 23:08:14 字數 1299 閱讀 2613

對於乙個具有樹特徵的無向圖,我們可選擇任何乙個節點作為根。圖因此可以成為樹,在所有可能的樹中,具有最小高度的樹被稱為最小高度樹。給出這樣的乙個圖,寫出乙個函式找到所有的最小高度樹並返回他們的根節點。

格式該圖包含 n 個節點,標記為 0 到 n - 1。給定數字 n 和乙個無向邊 edges 列表(每乙個邊都是一對標籤)。

你可以假設沒有重複的邊會出現在 edges 中。由於所有的邊都是無向邊, [0, 1]和 [1, 0] 是相同的,因此不會同時出現在 edges 裡。

示例 1:

輸入: n = 4, edges = [[1, 0], [1, 2], [1, 3]]

0|1

/ \2 3

輸出: [1]

示例 2:

輸入: n = 6, edges = [[0, 3], [1, 3], [2, 3], [4, 3], [5, 4]]

0  1  2

\ | /3|

4|

5

輸出: [3, 4]

說明:根據樹的定義,樹是乙個無向圖,其中任何兩個頂點只通過一條路徑連線。 換句話說,乙個任何沒有簡單環路的連通圖都是一棵樹。

樹的高度是指根節點和葉子節點之間最長向下路徑上邊的數量。

思路 拓撲序列 每次除去度為1 的節點 最後剩下的節點就是生成樹的根節點

class solution 

// 有n個節點 所以進行初始化

for(

int i=

0;i)// 每個節點都有乙個度

int[

] degree = new int

[n];

// edgs[0] 代表第一組 邊 edgs[0][0] :第一組邊的第乙個節點 edgs[0][1] :第一組邊中的第二個節點

for(

int i=

0;i)// bfs 必備佇列

queue queue = new linkedlist<

>()

;// 3.在佇列中加入第乙個滿足條件的元素

for(

int i =

0;i < n;i++)}

//進入while迴圈 剪枝更新

while

(!queue.

isempty()

)}}}

system.out.

println

("ans is "

+ ans)

;return ans;

}}

leetcode310 最小高度樹(bfs)

對於乙個具有樹特徵的無向圖,我們可選擇任何乙個節點作為根。圖因此可以成為樹,在所有可能的樹中,具有最小高度的樹被稱為最小高度樹。給出這樣的乙個圖,寫出乙個函式找到所有的最小高度樹並返回他們的根節點。格式該圖包含 n 個節點,標記為 0 到 n 1。給定數字 n 和乙個無向邊 edges 列表 每乙個...

310 最小高度樹

對於乙個具有樹特徵的無向圖,我們可選擇任何乙個節點作為根。圖因此可以成為樹,在所有可能的樹中,具有最小高度的樹被稱為最小高度樹。給出這樣的乙個圖,寫出乙個函式找到所有的最小高度樹並返回他們的根節點。格式該圖包含n個節點,標記為0到n 1。給定數字n和乙個無向邊edges列表 每乙個邊都是一對標籤 你...

Leetcode 310 最小高度樹

對於乙個具有樹特徵的無向圖,我們可選擇任何乙個節點作為根。圖因此可以成為樹,在所有可能的樹中,具有最小高度的樹被稱為最小高度樹。給出這樣的乙個圖,寫出乙個函式找到所有的最小高度樹並返回他們的根節點。格式該圖包含 n 個節點,標記為 0 到 n 1。給定數字 n 和乙個無向邊 edges 列表 每乙個...