一、二叉樹的定義
把滿足以下兩個條件的樹形結構叫做二叉樹
(1)每個節點的度都步大於2;
(2)每個節點的孩子節點次序不能任意顛倒。
所以,乙個二叉樹的每個節點只能含有0、1或者2個孩子,而且每個孩子有左右之分,位於左邊的交左孩子,位於右邊的叫右孩子。
二、樹的遍歷
二叉樹的遍歷分成三種,按照根節點的訪問先後分為:
一、定義 (什麼是遞迴?)
遞迴是指在函式的定義中使用函式自身的方法。實際上,遞迴,顧名思義,其包含了兩個意思:遞 和 歸,
二、 遞迴的兩個必要條件
1、存在限制條件,當滿足這個條件時,遞迴便不再繼續。
2、每次遞迴呼叫之後越來越接近這個限制條件。
三、舉例理解
遞迴和非遞迴分別實現求第n個斐波那契數。
斐波納契數列又稱**分割數列,指的是這樣乙個數列:1、1、2、3、5、8、13、21、……
在數學上,斐波納契數列以如下被以遞迴的方法定義:
//f0=0,f1=1,fn=f(n-1)+f(n-2)(n>=2,n∈n*)。
遞迴實現斐波那契數
#define _crt_secure_no_warnings
#include #include int fibonacci(int n)
else }
int main()
不用遞迴實現斐波那契數
#define _crt_secure_no_warnings
#include #include int fibonacci(int n)
for(i = 3; i <= n; i++)
return result;
}int main()
一、用法
1、sort函式可以三個引數也可以兩個引數,必須的標頭檔案#include < algorithm>和using namespace std;
2、它使用的排序方法是類似於快排的方法,時間複雜度為n*log2(n)
3、sort函式有三個引數:(第三個引數可不寫)
(1)第乙個是要排序的陣列的起始位址。
(2)第二個是結束的位址(最後一位要排序的位址)
(3)第三個引數是排序的方法,可以是從大到小也可是從小到大,還可以不寫第三個引數,此時預設的排序方法是從小到大排序。
eg:數的排序
#include#include#include#includeusing namespace std;
bool cmp(int a,int b)///實現從大到小排序的比較函式
int main()
; sort(arr,arr+10,cmp);
for(i=0;i<10;i++)
cout
一、深度優先搜尋遍歷
1、從頂點v出發深度遍歷圖g的演算法
① 訪問v
② 依次從頂點v未被訪問的鄰接點出發深度遍歷。
2、dfs演算法最大特色就在於其遞迴特性,使得演算法**簡潔。但也由於遞迴使得演算法難以理解,一定要學好遞迴!!!!!
3、框架
#include#include#includeusing namespace std;
const int maxn=100;
bool vst[maxn][maxn]; // 訪問標記
int map[maxn][maxn]; // 座標範圍
int dir[4][2]=; // 方向向量,(x,y)周圍的四個方向
bool checkedge(int x,int y) // 邊界條件和約束條件的判斷
void dfs(int x,int y)
for(int i=0;i<4;i++)
return; // 沒有下層搜尋節點,回溯
}int main()
二、廣度優先搜尋遍歷
1、從頂點v出發遍歷圖g的演算法買描述如下:
①訪問v
②假設最近一層的訪問頂點依次為vi1,vi2,vi3…vik,則依次訪問vi1,vi2,vi3…vik的未被訪問的鄰接點
③重複②知道沒有未被訪問的鄰接點為止
2、bfs演算法其實就是一種層次遍歷演算法。從演算法描述可以看到該演算法要用到佇列這一資料結構。
3、框架
#include#include#include#includeusing namespace std;
const int maxn=100;
bool vst[maxn][maxn]; // 訪問標記
int dir[4][2]=; // 方向向量
struct state // bfs 佇列中的狀態資料結構
;state a[maxn];
bool checkstate(state s) // 約束條件檢驗
void bfs(state st)
for(int i=0;i<4;i++)
}q.pop(); // 隊首元素出隊
} return;
}int main()
第三週學習總結
這周關於深度學習的內容比較簡單,是對線性代數的簡單回顧,所以我在這裡做乙個簡單的總結。向量與矩陣 矩陣是由m n個數組成的乙個m行n列的矩形 特別地,乙個m 1矩陣也稱為乙個m維列向量 而乙個1 n矩陣 也稱為乙個n維行向量.向量可以用矩陣表示,且有時特殊矩陣就是向量.簡言之就是矩陣包含向量.矩陣加...
第三週學習總結
複習了一周唄 就感覺鞏固了一下,學習方法還是理解著背,死記硬背是不可能的,除了英語和文科這輩子都不可能死記硬背的。今天還複習了剩下的搜尋。比如拓撲排序,根據深度進行的排序?雖然又看了一遍但是還是不知道這個到底與按深度排序有什麼區別的說,總之就是先算出深度,然後從入度為0的乙個個廣搜,放進陣列就好。剩...
第三週學習總結
第三週 本週還是對貪心演算法進行了進一步的講解與深入,在貪心問題的解決中,需要考慮很多情況的每種結果,經過對比思考得出利益最大化的解決方法。這次的貪心練習題出現了幾道英文題,勉勉強強能看懂題目。但也是這種英文題目讓我發現了對題意理解不夠透徹去做題,會出現各種或大或小問題。貪心的第一題,an easy...