Day22 | 二叉树 二叉搜索树中的搜索&&验证二叉搜索树
代码随想录 | Day22 | 二叉树:二叉搜索树中的搜索&&验证二叉搜索树主要学习内容: 二叉搜索树的性质:中序遍历是递增序列 700.二叉搜索树中的搜索700. 二叉搜索树中的搜索 - 力扣(LeetCode) 解法:二分查找**思路:**如果当前结点t->val大于val就去遍历左子树 如果小于就去遍历右子树 找到了就返回当前结点就是了 1.函数参数和返回值 1TreeNode* tra(TreeNode *t,int val) t为当前节点,val为目标值 2.终止条件 12if(t==nullptr || t->val==val) return t; 为空或者找到了都是返回本身 3.本层代码逻辑 其实就是二分查找的三种情况,找到了答案和大于小于搜索值 这三种情况也是互斥的,遍历左子树以后就不会去遍历右子树 123456if(t==nullptr || t->val==val) return t;else if(t->val>val) return...
侯捷 C++ STL标准库和泛型编程 | 学习笔记
侯捷 C++ STL标准库和泛型编程 | 学习笔记1 STL概述STL —— Standard Template Library,标准模板库 C++ Standard LIbrary,C++标准库中包含STL(即STL+一些小东西) 1.1 头文件名称 C++标准库的 header files 不带 .h,例如:#include<vector> 新式 C header files 不带 .h,例如:#include<cstdio> 老式 C header files 带 .h 仍然可用,例如:#include<stdio.h> 新式 header 内的组件封装于 namespace std 老式 header 内的组件不封装于 namespace std 1.2...
LeetCode Hot100 | Day6 | 从前序和中序数组构建二叉树
LeetCode Hot100 | Day6 | 从前序和中序数组构建二叉树从前序和中序数组构建二叉树105. 从前序与中序遍历序列构造二叉树 - 力扣(LeetCode) 1234567891011121314151617181920class Solution {public: TreeNode *tra(vector<int> preorder, vector<int> inorder) { if(preorder.size()==0) return nullptr; int val=preorder[0]; TreeNode* t=new TreeNode (val); int index=0; for(index=0;index<inorder.size();index++) if(val==inorder[index]) break; ...
Day21 | 二叉树 找树左下角的值&&路径总和
代码随想录 | Day21 | 二叉树:找树左下角的值&&路径总和主要学习内容: 1.利用二叉树的谦虚遍历进行题目解答 2.to_string函数的使用 513.找树左下角的值513. 找树左下角的值 - 力扣(LeetCode) 解法一:回溯思路: 难突破的点是我们怎么知道我们找的叶子结点是最左边的 其实只需要一直往下遍历,每一层最先遍历到的肯定是左边的 那如何知道是最下面的呢? 深度最深才能是最下面的 所以我们的目标就是找深度最深的叶子结点,保存第一个遍历到的深度最深的结点。这就是我们的答案 1.函数参数和返回值 1234int res;int curdepth=0;void tra(TreeNode *t,int...
LeetCode Hot100 | Day5 | 二叉树右视图&&二叉树展开为链表
LeetCode Hot100 | Day5 | 二叉树右视图&&二叉树展开为链表199.二叉树的右视图199. 二叉树的右视图 - 力扣(LeetCode) 完整代码: 1.递归遍历来自于灵神的题解,我仅仅是看懂 遍历顺序:中右左,因为收集的是右视图,我们要收集最右边的,先递归右子树,保证首次遇到的一定是最右边的,有人可能会好奇,这样的话,遍历左子树的时候会有不符合条件的答案进去,深度就是解决这个问题的 关键点: 深度首次遇到才会记录答案,这样避免了递归完右子树重新从根节点路过递归遍历左子树的时候,路过的重复深度的树层的树 这个在遍历完右子树后,如果左子树还有比右子树深度大的才会进入答案 123456789101112131415161718192021class Solution { vector<int> ans; void dfs(TreeNode* node, int depth) { if (node == nullptr) { return; ...
Day20 | 二叉树 二叉树所有路径&&左叶子之和
代码随想录 | Day20 | 二叉树:二叉树所有路径&&左叶子之和主要学习内容: 1.利用二叉树的谦虚遍历进行题目解答 2.to_string函数的使用 257.二叉树所有路径257. 二叉树的所有路径 - 力扣(LeetCode) 解法一:直接遍历本次使用的是前序遍历 1.函数参数和返回值 1void tra(string s,TreeNode *t) 如果不使用全局变量vector的话为 1void tra(vector<string>,string s,TreeNode...
LeetCode Hot100 | Day4 | 层序遍历&&有序数组转搜索树&&验证搜索树&&搜索树中第K小的元素
LeetCode Hot100 | Day4 | 层序遍历&&有序数组转搜索树&&验证搜索树&&搜索树中第K小的元素102.二叉树的层序遍历102. 二叉树的层序遍历 - 力扣(LeetCode) 完整代码: 123456789101112131415161718192021222324252627class Solution {public: vector<vector<int>> levelOrder(TreeNode* root) { vector<vector<int>> res; queue<TreeNode*> q; if(root==nullptr) return res; q.push(root); while(!q.empty()) { int size=q.size(); ...
Day19 | 复习二叉树所写部分
代码随想录 | Day19 | 复习二叉树所写部分Day 16 对称二叉树记忆不清晰,只有个大概的轮廓,但后序遍历(严格来说并不是)还是可以写出,层序遍历不记得方法 Day17 111. 二叉树的最小深度 - 力扣(LeetCode) 最小深度不够熟悉,方法也忘记了,也写错了,后续需要再次复习 Day18 222. 完全二叉树的节点个数 - 力扣(LeetCode) 利用二叉树性质的做法需要复习 110. 平衡二叉树 - 力扣(LeetCode) 123456789101112131415161718class Solution {public: bool flag=true; int backtracking(TreeNode *t) { if(t==nullptr) return 0; int l=1+backtracking(t->left); int r=1+backtracking(t->right); if(abs(l-r)>1) ...
MYSQL数据库连接池 | C++ | 项目实战
MYSQL数据库连接池 | C++ | 项目实战笔记通过施磊老师C++数据库连接池项目写出,供自己复习与大家参考 1.项目可以实现什么为了提高MySQL数据库(基于C/S设计)的访问瓶颈,除了在服务器端增加缓存服务器缓存常用的数据之外(例如redis),还可以增加连接池,来提高MySQL Server的访问效率,在高并发情况下,大量的TCP三次握手、MySQL Server连接认证、MySQL Server关闭连接回收资源和TCP四次挥手...
LeetCode Hot100 | Day3 | 二叉树 翻转二叉树&&对称二叉树
LeetCode Hot100 | Day3 | 二叉树:翻转二叉树&&对称二叉树226.翻转二叉树226. 翻转二叉树 - 力扣(LeetCode) 后序遍历交换两个结点就行 完整代码: 123456789101112131415class Solution {public: void tra(TreeNode *t) { if(t==nullptr) return; tra(t->left); tra(t->right); swap(t->left,t->right); } TreeNode* invertTree(TreeNode* root) { tra(root); return root; }}; 101.对称二叉树101. 对称二叉树 -...













