8
8
9
9
## 二分查找法
10
10
11
- ```
11
+ ``` CPP
12
12
class Solution {
13
13
public:
14
14
int searchInsert(vector<int >& nums, int target) {
@@ -33,7 +33,7 @@ public:
33
33
34
34
## KMP
35
35
36
- ```
36
+ ```CPP
37
37
void kmp(int* next, const string& s){
38
38
next[0] = -1;
39
39
int j = -1;
@@ -53,7 +53,7 @@ void kmp(int* next, const string& s){
53
53
54
54
二叉树的定义:
55
55
56
- ```
56
+ ``` CPP
57
57
struct TreeNode {
58
58
int val;
59
59
TreeNode * left;
@@ -65,7 +65,7 @@ struct TreeNode {
65
65
### 深度优先遍历(递归)
66
66
67
67
前序遍历(中左右)
68
- ```
68
+ ```CPP
69
69
void traversal(TreeNode* cur, vector<int>& vec) {
70
70
if (cur == NULL) return;
71
71
vec.push_back(cur->val); // 中 ,同时也是处理节点逻辑的地方
@@ -74,7 +74,7 @@ void traversal(TreeNode* cur, vector<int>& vec) {
74
74
}
75
75
```
76
76
中序遍历(左中右)
77
- ```
77
+ ``` CPP
78
78
void traversal (TreeNode* cur, vector<int >& vec) {
79
79
if (cur == NULL) return;
80
80
traversal(cur->left, vec); // 左
@@ -83,7 +83,7 @@ void traversal(TreeNode* cur, vector<int>& vec) {
83
83
}
84
84
```
85
85
后序遍历(左右中)
86
- ```
86
+ ```CPP
87
87
void traversal(TreeNode* cur, vector<int>& vec) {
88
88
if (cur == NULL) return;
89
89
traversal(cur->left, vec); // 左
@@ -97,7 +97,7 @@ void traversal(TreeNode* cur, vector<int>& vec) {
97
97
相关题解:[ 0094.二叉树的中序遍历] ( https://github.com/youngyangyang04/leetcode/blob/master/problems/0094.二叉树的中序遍历.md )
98
98
99
99
前序遍历(中左右)
100
- ```
100
+ ``` CPP
101
101
vector<int > preorderTraversal (TreeNode* root) {
102
102
vector<int > result;
103
103
stack<TreeNode* > st;
@@ -123,7 +123,7 @@ vector<int> preorderTraversal(TreeNode* root) {
123
123
```
124
124
125
125
中序遍历(左中右)
126
- ```
126
+ ```CPP
127
127
vector<int> inorderTraversal(TreeNode* root) {
128
128
vector<int> result; // 存放中序遍历的元素
129
129
stack<TreeNode*> st;
@@ -148,7 +148,7 @@ vector<int> inorderTraversal(TreeNode* root) {
148
148
```
149
149
150
150
后序遍历(左右中)
151
- ```
151
+ ``` CPP
152
152
vector<int > postorderTraversal (TreeNode* root) {
153
153
vector<int > result;
154
154
stack<TreeNode* > st;
@@ -176,7 +176,7 @@ vector<int> postorderTraversal(TreeNode* root) {
176
176
177
177
相关题解:[0102.二叉树的层序遍历](https://programmercarl.com/0102.二叉树的层序遍历.html)
178
178
179
- ```
179
+ ```CPP
180
180
vector<vector<int>> levelOrder(TreeNode* root) {
181
181
queue<TreeNode*> que;
182
182
if (root != NULL) que.push(root);
@@ -212,7 +212,7 @@ vector<vector<int>> levelOrder(TreeNode* root) {
212
212
213
213
### 二叉树深度
214
214
215
- ```
215
+ ``` CPP
216
216
int getDepth (TreeNode* node) {
217
217
if (node == NULL) return 0;
218
218
return 1 + max(getDepth(node->left), getDepth(node->right));
@@ -221,15 +221,15 @@ int getDepth(TreeNode* node) {
221
221
222
222
### 二叉树节点数量
223
223
224
- ```
224
+ ```CPP
225
225
int countNodes(TreeNode* root) {
226
226
if (root == NULL) return 0;
227
227
return 1 + countNodes(root->left) + countNodes(root->right);
228
228
}
229
229
```
230
230
231
231
## 回溯算法
232
- ```
232
+ ``` CPP
233
233
void backtracking (参数) {
234
234
if (终止条件) {
235
235
存放结果;
@@ -247,7 +247,7 @@ void backtracking(参数) {
247
247
248
248
## 并查集
249
249
250
- ```
250
+ ```CPP
251
251
int n = 1005; // 更具题意而定
252
252
int father[1005];
253
253
0 commit comments