树的存储和二叉树化与还原
Posted on In 数据结构与算法
二叉树
Posted on In 数据结构与算法
顺序遍历二叉树
先序遍历
- 访问根节点
- 访问左子树
- 访问右子树
递归以上过程
中序遍历
按照“左中右”的顺序访问
简单代码
1 | class Solution { |
后序遍历
按照“左右中”的顺序遍历
三种方法比较

层次遍历二叉树
使用队列实现
每个根节点出队时,将他的孩子入队
线索二叉树
利用二叉树的空指针域:
- 如果某节点左为空,则指向前驱
- 如果某节点右为空,则指向后继

标志域说明有没有对应子节点
数据结构与算法·广义表与非线性结构的树
Posted on In 数据结构与算法
字符串匹配——KMP算法
Posted on In 算法题每日一练
题目
有两个字符串,要求确定较短字符串在较长字符串中的位置。
暴力匹配

使用两层循环,一旦不匹配就将子串后移一位,时间复杂度为O(mn)
KMP算法
NEXT[]数组


构建next数组
1 | private void getNext(String p, int next[]) { |
匹配过程
1 | public int strStr(String target, String pattern) { |
数据结构与算法·串,数组
Posted on In 数据结构与算法
串
0个或多个任意字符组成的有限序列称为串
子串
串中任意个连续的字符称为该串的子串(包括空串)
子串位置
子串第一个字符在父串中的位置
空格串
由空格字符组成的串
串的链式存储结构
由于串的单个字符占用空间小,所以一个节点只存储一个字符的话,存储密度太低,故而一个节点存储多个字符
串的匹配-KMP算法
BF算法,是指经典的循环遍历方法,复杂度为O(n*m)
KMP算法是一种牺牲空间来加快速度的算法
https://zhuanlan.zhihu.com/p/83334559这篇文章讲的很清楚,有时间整理一下
简单来说,kmp算法先构建出一份图谱来确定不同状态前进或者回退,以及回退多少步。
数组
二维数组
数组中套娃数组,形成二维数组。
二维数组的逻辑结构
- 线性结构:每个元素是定长的数组
- 非线性结构:每个元素既在行表中,又在列表中。
二维数组的存储结构
以行序为主序
a[i][j]的位置在LOC(i,j)=LOC(0,0)+(n*i+j)*L
矩阵的存储
**常规存储:**存储为二维数组,不适合稀疏矩阵,相同值过多的矩阵
**压缩存储:**对数据有规律的矩阵,可以针对特性,进行压缩存储
SpringBoot初试
Posted on In Code & Program
数据库配置
首先建表:
1 | CREATE TABLE `user` ( |
主程序:
1 | /** |
新建一个路由
1 | // @ResponseBody |
然后运行主程序,应用就运行起来了,在浏览器输入localhost:8080/hello,就能看到消息了。
体会
springboot相比ssm,少了很多配置,使用默认配置来简化开发。
使用父项目来引入依赖(几乎是开发中所有会用到的依赖),项目不需要自己引入依赖了。
对父项目的依赖版本不满意,可以自己在pom.xml修改
1 | <!-- 也可以自己修改版本 --> |
集成了tomcat环境,可以打包成一个完整的项目直接运行,不需要额外配置服务器。






