数据结构与算法(数Tree)
树概述:
树:是一种经常用到的数据结构,用来模拟具有树状结构性质的数据集合。树里的每一个节点有一个值和一个包含所有子节点的列表。从图的观点来看,树也可视为一个拥有N 个节点和N-1 条边的一个有向无环图。二叉树:是一种更为典型的树状结构。如它名字所描述的那样,二叉树是每个节点最多有两个子树的树结构,通常子树被称作“左子树”和“右子树”。
树的遍历前序遍历前序遍历首先访问根节点,然后遍历左子树,最后遍历右子树。
中序遍历中序遍历是先遍历左子树,然后访问根节点,然后遍历右子树。我们可以通过中序遍历得到一个递增的有序序列
后序遍历后序遍历是先遍历左子树,然后遍历右子树,最后访问树的根节点。值得注意的是,当你删除树中的节点时,删除过程将按照后序遍历的顺序进行。 也就是说,当你删除一个节点时,你将首先删除它的左节点和它的右边的节点,然后再删除节点本身。另外,后序在数学表达中被广泛使用。 编写程序来解析后缀表示法更为容易.
层序遍历层序遍历就是逐层遍历树结构。
广度优先搜索是一种广泛运用在树或图这类数据结构中,遍历或搜索的算法。 该算法从一个根节点开始,首先访问节点本身。 然后遍历它的相邻节点 ...
安装nodejs的详细流程保姆级(踩了无数次坑)
node简述::::infonode的使用已经是前端选手基本的选择,其强大的功能甚至到了要和后端抢活干的地步,同时想要搭建个人的博客用node工具也是非常方便的,作为一名后端选上,刚开始准备下载node的时候是因为想要去搭建个人的博客,但是下载之后,使用npm install命令的时候一直报错,无奈找了许多的文章,但是都不能很好的解决我的问题,但是最终还是不辜负我的努力,成功搭建了自己的博客(),以及跟着皮总写了这几个直播项目.接下来我带着大家全称安装node.:::
node的下载和安装官网下载链接:::infohttps://nodejs.org/en/:::建议安装稳定版本(因为最新版容易出现一些意想不到的小bug)根据自己电脑的版本选择适合自己的进行安装下载,我如图是我电脑上面下载的版本,选择msi版的更方便食用这边不需要勾选,无脑下一步,然后就安装成功了,这里距离成功已经不是很远啦.:::infowin+R输入cmd打开控制台分别输入node -v和npm -v:::
node -vnpm -v看到如图,便证明此电脑已经成功安装node
1.修改全局模块路径和缓存路径(大 ...
关于qq邮箱接受验证码功能的实现
qq邮箱接收验证码第一步:pom.xml导入配置123456789101112131415161718<!--QQ邮箱验证码所需jar包--><dependency> <groupId>javax.activation</groupId> <artifactId>activation</artifactId> <version>1.1.1</version></dependency> <dependency> <groupId>javax.mail</groupId> <artifactId>mail</artifactId> <version>1.4.7</version></dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId&g ...
力扣刷题笔记
力扣总结笔记1.二分查找:704补充:
数组下标都是从0开始的。
数组内存空间的地址是连续的
正是因为数组的在内存空间的地址是连续的,所以我们在删除或者增添元素的时候,就难免要移动其他元素的地址。
查找目标值target,返回该值的数组元素的下标。
二分法适用于已经排好序的数组,定义两个变量,一个left,一个right,则mid = left + ((right - left) >> 1)
1.针对左闭右闭算法 [left,right]
如果 target==arr[mid],中间值正好等于要查找的值,则返回下标,return mid;
如果 target<arr[mid],要找的值小于中间的值,则再往数组的小端找,right=mid-1;
如果 target>arr[mid],要找的值大于中间的值,则再往数组的大端找,left=mid+1;
注意:
123while(right >= left)int right = nums.length - 1;
2.针对左闭右开算法 [left, r ...
算法小白成长之路(一)
情景一:头尾交换位置往中间靠近:反转字符串:344. 反转字符串:::info编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。:::示例 1:输入:s = [“h”,”e”,”l”,”l”,”o”]输出:[“o”,”l”,”l”,”e”,”h”]示例 2:输入:s = [“H”,”a”,”n”,”n”,”a”,”h”]输出:[“h”,”a”,”n”,”n”,”a”,”H”]分析:这道题就是典型的把一个字符左右位置交换顺序,使用双指针不需要重新创建一个字符,原地修改了该字符,直到两个指针相遇就得到了反转的字符.
12345678910111213141516171819202122class Solution { public void reverseString(char[] s) { int l = 0; int r = s.length - 1; //方法一:使用 ...
备忘录
:::infohttps://qmsg.zendee.cn/apiQmsg酱网站 可以设置qq机器人功能
https://sct.ftqq.com/afterServer酱 可以设置微信自动回复的功能
https://valine.js.org/hexo.htmlhexo兼容的valine的无后端评论系统
https://console.leancloud.app/apps/EdhEdO1XQehE1OKwzjbgz8Z2-MdYXbMMI/settings/keys设置的配置网站
https://www.nickxu.top/butterfy主题网站官方:::
java8新特性
汇报人:…星辰日期:2022-11-16
本周重点
1.任务进展学习了java8的基础知识,更深层次的了解了Java的新特性
2.相关数据
lambda
lambda表达式的重要特征:
可选类型声明:不需要声明参数类型,编译器可以统一识别参数值。
可选的参数圆括号:一个参数无需定义圆括号,但多个参数需要定义圆括号。
可选的大括号:如果主体包含了一个语句,就不需要使用大括号。
可选的返回关键字:如果主体只有一个表达式返回值则编译器会自动返回值,大括号需要指定表达式返回了一个数值。
Lambda 表达式实例:12345// 1. 不需要参数,返回值为 5 () -> 5 // 2. 接收一个参数(数字类型),返回其2倍的值 x -> 2 * x // 3. 接受2个参数(数字),并返回他们的差值 (x, y) -> x – y // 4. 接收2个int型整数,返回他们的和 (int x, int y) -> x + y // 5. 接受一个 string 对象,并在控制台打印,不返回任何值(看起来像是返回void) ...
Hello World
Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.
Quick StartCreate a new post1$ hexo new "My New Post"
More info: Writing
Run server1$ hexo server
More info: Server
Generate static files1$ hexo generate
More info: Generating
Deploy to remote sites1$ hexo deploy
More info: Deployment