深度優先搜尋(dfs):
廣度優先搜尋(bfs):
給定乙個二叉樹,返回其按層次遍歷的節點值(即逐層地,從左到右訪問所有節點)
例如:
給定二叉樹:[3,9,20,null,null,15,7]
3
/ \9 20
/ \
15 7
返回其層次遍歷結果:
[
[3],
[9,20],
[15,7]
]
1)dfs,遞迴
list
> result =
newarraylist
<
>()
;public list
>
levelorder
(treenode root)
private
void
helper
(treenode root,
int depth)
2)bfs,使用佇列實現
public list
>
levelorder
(treenode root)
result.
add(tmp);}
return result;
}
您需要在二叉樹的每一行中找到最大的值
示例:
輸入:
1/ \
3 2
/ \ \
5 3 9
輸出:[1, 3, 9]
題解:
public list
largestvalues
(treenode root)
result.
add(max);}
return result;
}
給定乙個由』1』(陸地)和』0』(水)組成的的二維網格,計算島嶼的數量。乙個島被水包圍,並且它是通過水平方向或垂直方向上相鄰的陸地連線而成的。你可以假設網格的四個邊均被水包圍
示例 1:
輸入:
11110
11010
11000
00000
輸出: 1
示例 2:
輸入:
11000
11000
00100
00011
輸出: 3
題解:
public
intnumislands
(char
grid)}}
return num;
}private
void
dfs(
char
grid,
int i,
int j)
解析:線性掃瞄整個二維網格,如果乙個結點包含1,則以其為根結點啟動深度優先搜尋。在深度優先搜尋過程中,每個訪問過的結點被標記為0。計數啟動深度優先搜尋的根結點的數量,即為島嶼的數量
常用資料結構的時間、空間複雜度:
深度優先搜尋和廣度優先搜尋
深度優先的思想是先記住當前的起點,然後選定乙個方向一條道走到黑,若失敗則回到起點再選定另外乙個方向走到黑。廣度優先的思想是記住當前的起點,然後選定各個方向的相鄰點作為新的起點,再繼續。可以看出,深度優先和廣度優先都需要記住當前的起點,不同的是深度優先每次只需要記住乙個方向的相鄰點,廣度優先則要記住所...
廣度優先搜尋和深度優先搜尋
dbf深度優先搜尋,最經典的方法,可以使用遞迴來實現。結構體定義 typedef char vertextype typedef int edgetype define maxvex 100 define infinite 65535 typedef struct mgraph 測試函式如下 mgr...
深度優先搜尋和廣度優先搜尋
定義 圖 graph 是由頂點的有窮非空集合和頂點之間邊的集合組成,通常表示為 g v,e 其中,g表示乙個圖,v是圖g中頂點的集合,e是圖g中邊的集合.簡單點的說 圖由節點和邊組成。乙個節點可能與眾多節點直接相連,這些節點被稱為鄰居。如二叉樹就為乙個簡單的圖 廣度優先搜尋演算法 breadth f...