代码改变世界

随笔分类 -  数据结构

数据结构学习--Java删除二叉树节点

2019-11-12 14:53 by 小花儿鹿, 1608 阅读, 收藏, 编辑
摘要: 想了半天,是真的不好想(手动捂脸) 三种情况需要考虑: 1、该节点是叶子节点,没有子节点 要删除叶节点,只需要改变该节点的父节点的引用值,将指向该节点的引用设置为null就可以了。 2、该节点有一个子节点 改变父节点的引用,将其直接指向要删除节点的子节点。 3、该节点有两个子节点 要删除有两个子节点 阅读全文

数据结构学习--Java遍历二叉树

2019-11-07 15:00 by 小花儿鹿, 182 阅读, 收藏, 编辑
摘要: 一、遍历树 遍历树是根据一个特定的顺序访问树的每一个节点,根据顺序的不同分为前序、中序、后序遍历三种。 二、前序遍历 1、访问根节点 2、前序遍历左子树 3、前序遍历右子树 三、中序遍历 1、中序遍历左子树 2、访问根节点 3、中序遍历右子树 四、后序遍历 1、后序遍历左子树 2、后序遍历右子树 3 阅读全文

数据结构学习--Java树

2019-11-07 10:36 by 小花儿鹿, 218 阅读, 收藏, 编辑
摘要: 一、为什么需要使用树 有序数组插入数据项太慢,不过查询快,因为存储数据地址都是连在一起的。 链表查找数据太慢,不过插入删除快。 二、路径 顺着连接节点的边从一个节点到另一个节点,所经过的节点顺序排列称为路径。 三、根 树最上面的节点称为根节点。一棵树只有一个根。而且从根到任何节点有且只有一条路径。 阅读全文

数据结构学习--Java希尔排序

2019-11-06 17:33 by 小花儿鹿, 123 阅读, 收藏, 编辑
摘要: 插入排序的缺陷 多次移动。假如很小的数据在靠右端的位置上,那么要将该数据排列到正确的位置上,则所有的中间数据都需要向右移动一位。 特别是如果数据量大,但是某些较小的数据排在了最后面,那么移动位置将非常消耗时间。 希尔排序的优点 通过加大插入排序中元素之间的间隔,并对这些间隔的元素进行插入排序,从而使 阅读全文

数据结构学习--Java双端链表、双向链表

2019-11-06 16:52 by 小花儿鹿, 188 阅读, 收藏, 编辑
摘要: 1、双端链表 链表中保存着对最后一个链节点引用的链表 2、从头部进行插入 要对链表进行判断,如果为空则设置尾节点为新添加的节点 3、从尾部进行插入 如果链表为空,则直接设置头节点为新添加的节点,否则设置尾节点的后一个节点为新添加的节点 4、从头部进行删除 判断头节点是否有下一个节点,如果没有则设置为 阅读全文

数据结构学习--Java链表

2019-11-01 14:38 by 小花儿鹿, 137 阅读, 收藏, 编辑
摘要: 链表就和火车一样,一节一节的车厢形成节点,其中我们把车头当作first node,所有的操作全部由first node参与进行实现。 Node.java 阅读全文

数据结构学习--Java栈和队列

2019-11-01 10:50 by 小花儿鹿, 142 阅读, 收藏, 编辑
摘要: 栈:先进后出 队列:先进先出 都是数组存放,但是删除的时候不是删除了数组中的数据,而是使用增加游标标识的方式实现删除,“游标标识”加加或者减减完成删除操作,查看的时候,也不是直接查看栈和队列的数组元素,而是使用游标的方式向外查看。 栈的实现 阅读全文

数据结构学习--Java简单排序

2019-10-31 18:44 by 小花儿鹿, 157 阅读, 收藏, 编辑
摘要: 冒泡排序需要元素每次遍历都从最底部向上冒泡,找到适合的位置后,该位置之后的元素继续向上冒,这样一趟排序结束后,将冒出最大或者最小值。 选择排序需要元素从0号位开始向上遍历一遍,并将最小值放到0号位上,下一次遍历则开始处理1号位元素,以此类推。(选择排序要比冒泡排序效率要高一些) 插入排序需要元素初始 阅读全文

数据结构学习--Java数组的实现

2019-10-31 16:26 by 小花儿鹿, 618 阅读, 收藏, 编辑
摘要: 一、创建数组 private long[] arr;//初始化数组 private int elemenets;//数组有效数据长度 二、添加数组 public void insert(long value){ arr[elemenets] = value; elemenets ++; } 三、显示 阅读全文

js实现创建二叉树+后序遍历

2019-01-23 13:49 by 小花儿鹿, 1230 阅读, 收藏, 编辑
摘要: 二叉树概念 1.除了最下面一层,每个节点都是父节点,每个节点都有且最多有两个子节点; 2.除了嘴上面一层,每个节点是子节点,每个节点都会有一个父节点; 3.最上面一层的节点为根节点; 图例说明: 后序遍历概念 首先遍历左子树,然后遍历右子树,最后访问根结点 图例说明: 最后贴代码 阅读全文

js实现创建二叉树+中序遍历

2019-01-23 13:44 by 小花儿鹿, 3305 阅读, 收藏, 编辑
摘要: 二叉树概念 1.除了最下面一层,每个节点都是父节点,每个节点都有且最多有两个子节点; 2.除了嘴上面一层,每个节点是子节点,每个节点都会有一个父节点; 3.最上面一层的节点为根节点; 图例说明: 中序遍历概念 先打印左子树(左子节点),接着打印父节点,最后打印右子树(右子节点) 图例说明: 最后贴代 阅读全文

js实现创建二叉树+先序遍历

2019-01-23 11:51 by 小花儿鹿, 3115 阅读, 收藏, 编辑
摘要: 二叉树概念 1.除了最下面一层,每个节点都是父节点,每个节点都有且最多有两个子节点; 2.除了嘴上面一层,每个节点是子节点,每个节点都会有一个父节点; 3.最上面一层的节点为根节点; 图例说明: 先序遍历概念 先打印父节点,然后是左子节点(左子树),然后再打印右子节点(子树) 图例说明: 最后贴代码 阅读全文

快速排序算法实现及其案例

2018-10-25 14:46 by 小花儿鹿, 1365 阅读, 收藏, 编辑
摘要: 快速排序是对冒泡排序的一种改进,基本思路如下 1.先从数列中取出一个数作为基准数 2.将数组中比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边 3.再对左右区间重复第二步,直到各区间只有一个数 js案例: 阅读全文