diff --git a/problems/算法模板.md b/problems/算法模板.md index df823e81..c772c178 100644 --- a/problems/算法模板.md +++ b/problems/算法模板.md @@ -8,7 +8,7 @@ ## 二分查找法 -``` +```c++ class Solution { public: int searchInsert(vector& nums, int target) { @@ -33,7 +33,7 @@ public: ## KMP -``` +```c++ void kmp(int* next, const string& s){ next[0] = -1; int j = -1; @@ -53,7 +53,7 @@ void kmp(int* next, const string& s){ 二叉树的定义: -``` +```c++ struct TreeNode { int val; TreeNode *left; @@ -65,7 +65,7 @@ struct TreeNode { ### 深度优先遍历(递归) 前序遍历(中左右) -``` +```c++ void traversal(TreeNode* cur, vector& vec) { if (cur == NULL) return; vec.push_back(cur->val); // 中 ,同时也是处理节点逻辑的地方 @@ -74,7 +74,7 @@ void traversal(TreeNode* cur, vector& vec) { } ``` 中序遍历(左中右) -``` +```c++ void traversal(TreeNode* cur, vector& vec) { if (cur == NULL) return; traversal(cur->left, vec); // 左 @@ -83,7 +83,7 @@ void traversal(TreeNode* cur, vector& vec) { } ``` 后序遍历(左右中) -``` +```c++ void traversal(TreeNode* cur, vector& vec) { if (cur == NULL) return; traversal(cur->left, vec); // 左 @@ -97,7 +97,7 @@ void traversal(TreeNode* cur, vector& vec) { 相关题解:[0094.二叉树的中序遍历](https://github.com/youngyangyang04/leetcode/blob/master/problems/0094.二叉树的中序遍历.md) 前序遍历(中左右) -``` +```c++ vector preorderTraversal(TreeNode* root) { vector result; stack st; @@ -123,7 +123,7 @@ vector preorderTraversal(TreeNode* root) { ``` 中序遍历(左中右) -``` +```c++ vector inorderTraversal(TreeNode* root) { vector result; // 存放中序遍历的元素 stack st; @@ -148,7 +148,7 @@ vector inorderTraversal(TreeNode* root) { ``` 后序遍历(左右中) -``` +```c++ vector postorderTraversal(TreeNode* root) { vector result; stack st; @@ -176,7 +176,7 @@ vector postorderTraversal(TreeNode* root) { 相关题解:[0102.二叉树的层序遍历](https://programmercarl.com/0102.二叉树的层序遍历.html) -``` +```c++ vector> levelOrder(TreeNode* root) { queue que; if (root != NULL) que.push(root); @@ -212,7 +212,7 @@ vector> levelOrder(TreeNode* root) { ### 二叉树深度 -``` +```c++ int getDepth(TreeNode* node) { if (node == NULL) return 0; return 1 + max(getDepth(node->left), getDepth(node->right)); @@ -221,7 +221,7 @@ int getDepth(TreeNode* node) { ### 二叉树节点数量 -``` +```c++ int countNodes(TreeNode* root) { if (root == NULL) return 0; return 1 + countNodes(root->left) + countNodes(root->right); @@ -229,7 +229,7 @@ int countNodes(TreeNode* root) { ``` ## 回溯算法 -``` +```c++ void backtracking(参数) { if (终止条件) { 存放结果; @@ -247,7 +247,7 @@ void backtracking(参数) { ## 并查集 -``` +```c++ int n = 1005; // 更具题意而定 int father[1005];