基礎搜尋學習記錄

2021-10-07 23:54:36 字數 1407 閱讀 5075

基礎搜尋

搜尋的基本演算法是:深度優先搜尋(dfs, depth-first search)、寬度優先搜尋(bfs, breadth-first search,或稱為廣度優先搜尋)。

靜態版二叉樹如下

bfs

bfs可以看作是將每一層的節點依次放入佇列中

bfs靜態二叉樹**如下

#include

using

namespace std;

const

int maxn =

100005

;struct nodenode[maxn]

;int index =0;

//記錄節點

intnewnode

(char val)

void

insert

(int

&father,

int child,

int l_r)

intbuildtree()

intmain()

return0;

}

dfs

dfs核心就是運用遞迴的原理實現遍歷

dfs靜態二叉樹**如下

#include

using

namespace std;

const

int maxn =

100005

;struct nodenode[maxn]

;int index =0;

//記錄節點

intnewnode

(char val)

void

insert

(int

&father,

int child,

int l_r)

void preorder (

int father)

}void inorder (

int father)

}void postorder (

int father)

}int

buildtree()

intmain()

dfs**框架如下

ans;

//答案,用全域性變數表示

void

dfs(層數,其他引數)

(剪枝)

//在進一步dfs之前剪枝

for(列舉下一層可能的情況)

//對每乙個情況繼續dfs

if(used[i]==0

)return

;//返回到上一層

}

dfs的**比bfs更簡單,如果乙個問題用bfs和dfs都行,一般用dfs。

深度優先搜尋學習記錄

首先,深度優先搜尋與二叉樹遍歷中先序遍歷的原理十分相似,即一直向前走直到盡頭再返回 偽 描述 void dfs 一 8皇后問題 這道題有兩種做法 我知道的 是利用數字的全排列,求出每一位數字都不同的序列,此時滿足同一行同一列只有乙個皇后,只需判斷斜著有沒有皇后即可,可以利用 進行判斷 標準的dfs操...

語法基礎學習記錄

假設想初始化乙個陣列全0,就這樣,沒寫的後面預設全0 int x 100 注意如果你開的陣列足夠大的話,放到全域性變數比較好,因為它占用的就是堆記憶體了 如果在函式裡包括main會占用棧空間,大小是有限制的 注意如果你定義全域性變數陣列,即使不初始化,也全部為0,定義在函式內的就不一定是啥了 翻轉陣...

python學習記錄 基礎

模組匯入與使用 編寫規範 其他浮點數 複數 a 3 4j b 5 6j c a b c 8 10j c.real 8.0 c.imag 10.0 a.conjugate 3 4j a b 9 38j a b 0.6393442622950819 0.03278688524590165j python...