基礎搜尋
搜尋的基本演算法是:深度優先搜尋(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...