![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
文章平均质量分 50
文艺小码农
这个作者很懒,什么都没留下…
展开
-
查找文件是否包含某个字符串
查找文件夹下所有文件(内部),是否包含指定字符串。import java.io.BufferedReader;import java.io.File;import java.io.FileFilter;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStreamReader;public class FileDemo { static String path = "E:\\原创 2021-07-17 00:55:23 · 1368 阅读 · 0 评论 -
打印杨辉三角(时间、空间复杂度最低的方法)---java版
杨辉三角,是二项式系数在三角形中的一种几何排列,在中国南宋数学家杨辉1261年所著的《详解九章算法》一书中出现。Description1 第1行1 1 第2行1 2 1 第3行1 3 3 1 第4行...原创 2018-11-15 22:23:18 · 1055 阅读 · 0 评论 -
先序遍历-递归和非递归(java版)
根据先序遍历访问的顺序,优先访问根结点,然后再分别访问左孩子和右孩子。即对于任一结点,其可看做是根结点,因此可以直接访问,访问完之后,若其左孩子不为空,按相同规则访问它的左子树;当访问其左子树时,再访问它的右子树。因此其处理过程如下: 对于任一结点P: 1)将结点p压入栈中; 2)如果p有右孩子,将右孩子压入栈中;如果p有左孩子,将左孩子压入栈中;(注意先右孩子入栈,后...原创 2018-11-20 20:52:56 · 3941 阅读 · 0 评论 -
中序遍历--递归和非递归(java版)
根据中序遍历的顺序,对于任一结点,优先访问其左孩子,而左孩子结点又可以看做一根结点,然后继续访问其左孩子结点,直到遇到左孩子结点为空的结点才进行访问,然后按相同的规则访问其右子树。因此其处理过程如下: 对于任一结点root,引入一个辅助节点p,其作用是:标记已经访问过的节点, 1)将root压入栈中,只有有左孩子,就压入栈中 if(p!=null &&...原创 2018-11-21 21:17:43 · 8445 阅读 · 0 评论 -
后续遍历--递归与非递归(java版)
先访问左右孩子,再访问根节点。同样还是采用栈的形式,但是问题是,先访问左孩子出栈,根节点不能删除,再访问右孩子出栈,最后访问根节点出栈。我们的思路是这样的:对于某个节点p: 1)将p压入栈中,并将p所有的左孩子,全部压入栈中: while(stk.isEmpty() == false) { if(p!=null &&a...原创 2018-11-21 21:53:04 · 974 阅读 · 1 评论 -
简单易懂的介绍----哈夫曼树
1、什么是哈夫曼树哈夫曼树:它是 n 个带权叶子结点构成的所有二叉树中,带权路径长度 WPL 最小的二叉树(又称最优二叉树)。 WPL树的带权路径长度:wi表示权值li表示树的深度例如:上面三棵树的带权路径长度分别是:WPL(1) = 4*2+7*3+5*3+2*1=46WPL(2)=7*2+5*2+2*2+4*2=36WPL(3)=7*1+5*...原创 2018-11-21 23:18:26 · 1822 阅读 · 0 评论 -
循序渐进,深入理解KMP算法
KMP算法是三位大牛:D.E.Knuth、J.H.Morris和V.R.Pratt同时发现的。其中第一位就是《计算机程序设计艺术》的作者!KMP算法要解决的问题就是在字符串(也叫主串)中的模式(pattern)定位问题。说白了,就是关键字搜索。模式串就是关键字(接下来称它为P),如果它在一个主串(接下来称为T)中出现,就返回它的具体位置,否则返回-1(常用手段)。常规的暴力匹配算法...原创 2018-11-18 13:16:32 · 2690 阅读 · 1 评论