![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
不懂才觉得高深
爱生活,爱学习,爱工作
展开
-
平衡二叉树的简单实现
定义:平衡二叉搜索树,又被称为AVL树(Self-balancing binary search tree),且具有以下性质:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。图解参考其实就是基于BST树,区别就是添加节点和删除节点的时候判断树是否平衡,不平衡的时候,通过旋转的方式来让树平衡/** * AVL树的节点 */public cla...原创 2020-01-04 18:21:30 · 197 阅读 · 0 评论 -
二叉排序树(BST)
参考文章定义一棵空树,或者是具有下列性质的二叉树:1 若左子树不空,则左子树上所有结点的值均小于它的根结点的值;2) 若右子树不空,则右子树上所有结点的值均大于它的根结点的值;3) 左、右子树也分别为二叉排序树;4) 没有键值相等的结点。代码实现如下,参考文章的图解和思路都超赞/** * 二叉排序树节点 */public class BSTreeNode { /**...原创 2020-01-02 18:34:12 · 131 阅读 · 0 评论 -
单链表的应用--约瑟夫问题
问题描述:Josephu(约瑟夫、约瑟夫环) 问题Josephu 问题为:设编号为 1,2,… n 的 n 个人围坐一圈,约定编号为 k(1<=k<=n)的人从 1 开始报数,数 到 m 的那个人出列,它的下一位又从 1 开始报数,数到 m 的那个人又出列,依次类推,直到所有人出列为止,由 此产生一个出队编号的序列。提示:用一个不带头结点的循环链表来处理 Josephu 问题:先...原创 2019-12-30 09:33:14 · 199 阅读 · 0 评论 -
栈的简单实现
栈的描述:线性结构,有序列表,先进后出数组实现栈:思路:记录一下栈顶元素的索引,加入新元素时索引++,索引位置对应的值设为新元素,直到栈满,取出元素后,索引–,直到小于0,栈空;/** * 链表实现栈 */public class ArrayStack { /** * 栈顶 */ private int top = -1; /** ...原创 2019-12-28 18:19:50 · 130 阅读 · 0 评论 -
递归
递归就是方法不断的调用方法本身,每次调用时,传入不同的变量递归每调用一次方法本身,就将方法压入栈中,执行完栈顶的方法后,将结果返回,方法依次出栈,最后全部出栈.递归调用完毕样列一阶乘的运算问题描述:大于等于00的阶乘: 0!=1;1的阶乘: 1!=1;任何大于等于1 的自然数n 阶乘表示方法:n!=1 x 2 x 3 x … x(n-1) x n ;/** * 阶乘运算 *...原创 2019-12-28 18:04:44 · 124 阅读 · 0 评论 -
常用排序算法
参考文章排序算法:排序也称排序算法,排序是将一组数据,依指定的顺序进行排列的过程排序的分类1,内部排序指将需要处理的所有数据都加载到内部存储器(内存)中进行排序2,外部排序数据量过大,无法全部加载到内存中,需要借助外部存储(文件等)进行排序常见的排序算法:一.插入排序:1.直接插入排序/** * 直接插入排序 * <p> * 算法描述 * 从第一个元...原创 2019-12-28 18:09:21 · 149 阅读 · 0 评论 -
常用查找算法
在 java 中,我们常用的查找有四种:顺序(线性)查找/** * 线性查找 * 最简单的查找 * 其实就是遍历整个数组,一个个的去进行值的比对,找到就返回结果 */public class SeqSearch { /** * 从数组中查找key的索引 * * @param arr * @param key * @re...原创 2019-12-28 18:06:24 · 134 阅读 · 0 评论 -
二叉树
定义二叉树是n(n>=0)个结点的有限集合,该集合或者为空集(称为空二叉树),或者由一个根结点和两棵互不相交的、分别称为根结点的左子树和右子树组成。如图:二叉树特点每个结点最多有两颗子树,所以二叉树中不存在度大于2的结点。左子树和右子树是有顺序的,次序不能任意颠倒。即使树中某结点只有一棵子树,也要区分它是左子树还是右子树。二叉树实现遍历,查找,删除功能/** * 数...原创 2019-12-28 18:03:34 · 225 阅读 · 0 评论