
数据结构
文章平均质量分 86
实战
学者阿三
java从0开始,所以所有的代码都有详细解释,一起努力丫!
展开
-
数据结构八、AVL平衡二叉树(不仅满还完全的二叉树)以及红黑树(单一黑平衡的二叉树)
文章目录平衡二叉树(1)平衡二叉树描述(2)平衡二叉树的搭建(3)平衡二叉树的初始化(4)判断该树是否为平衡二叉树测试(5)AVL的左旋转和右旋转(5)AVL的增(6)AVL的删平衡二叉树(1)平衡二叉树描述一棵满二叉树和完全二叉树的组合就是平衡二叉树线段树也是平衡二叉树平衡二叉树的要求:对于任意一个结点,左子树和右子树的高度差不能超过1(2)平衡二叉树的搭建我们由改版形成,源代码请看二分搜索树(3)平衡二叉树的初始化平衡二叉树在二分搜索树中引进了树的高的,平衡因子在平衡原创 2021-07-12 20:54:20 · 253 阅读 · 1 评论 -
数据结构七、堆和优先队列
文章目录堆优先队列堆(最大)堆:是一个可以被看成一棵树的数组对象,满足如下性质:堆中的父亲结点优先级总大于等于其左右孩子结点的值总是一棵完全二叉树可以把数字大的看做优先级高的,也可以把数字小的看做优先级低的满二叉树:每一层的节点树都为2^(h-1)每一层都是满的完全二叉树把元素顺序排列成树的形状堆的性质根节点没有父亲结点除根节点之外的任意结点(i)的父亲结点的索引为: parent = i/2任意结点的左孩子结点的索引为: leftIndex = 2原创 2021-07-05 10:38:41 · 161 阅读 · 0 评论 -
数据结构六、set与map(链表与二分搜索树的延续)
文章目录setset原创 2021-06-30 17:36:08 · 220 阅读 · 1 评论 -
数据结构五、二分搜索树(最细递归)
文章目录二分搜索树描述二分搜索树创建1.创建一个二分搜索树类2.创建一个节点(内部类)3.初始化二叉树二分搜索树描述树为什么要有树结构树结构本身是一种天然的组织结构高效的访问查询我们要的元素二叉树如上图所示每个节点在分叉时至多分俩个叉的树叫做二叉树与链表一样,是动态数据结构,不需要考虑扩容问题最上面的节点叫做根节点,二叉树具有唯一的根节点每一个节点都可以有俩个子节点,我们把他称作左孩子节点,右孩子节点最下面的节点,也就是左右孩子为空的节点叫叶子节点二叉树每个节点,原创 2021-06-29 11:08:41 · 255 阅读 · 2 评论 -
数据结构四、实现链表(链表为底层的动态栈and队列)与递归(猴子吃peach)以及单链表的递归
文章目录链表描述创建链表1.创建一个动态链表了2.创建一个节点(内部类)3.初始化链表4.链表的增5.链表遍历6.链表查询7.链表更新8.链表删除数组,栈,队列底层都是静态数组靠resize解决固定容量的问题链表是真正的动态数据结构链表描述链表数据存在节点(node)中,(Node next)指向下一个节点的引用优点:不需要处理固定容量的问题,真正的动态增删快缺点:丧失了随机访问的能力查询慢,没有索引,需要逐个查询创建链表1.创建一个动态链表了p原创 2021-06-27 22:18:54 · 471 阅读 · 1 评论 -
数据结构三、队列还有循环队列在这里
文章目录队列描述创建队列1.先创建一个队列接口2.实现队列循环队列描述创建循环队列队列描述队列也是一种线性数据结构只能从一端(队尾)添加元素,从另一端(队首)取出元素队列是一种先进先出的数据结构 FIFO队列就像食堂排队从第一个到最后一个第一个打饭的人向出去,最后一个打饭的人后出去也就是先进先出第一个打饭的叫做队首,先出的那个最后一个打饭的叫做队尾,后进的那个创建队列1.先创建一个队列接口public interface QueueInterface<T> {原创 2021-06-26 18:49:24 · 186 阅读 · 0 评论 -
数据结构二、简单的栈简单点
文章目录栈描述创建数组1.先创建一个栈接口2.实现栈栈的应用栈描述栈也是一种线性数据结构规定只能从栈顶添加元素,也只能从栈顶取出元素栈是一种后进先出的数据结构栈就相当于是一个箱子,入栈就是向箱子里面放书,出栈就是从箱子里面取书,因为取书只能取最后一本书,所以栈是一个先进后出的数据结构创建数组1.先创建一个栈接口public interface StackInterface<T> { //判断栈有多少元素 public int getSize(); /原创 2021-06-26 16:16:33 · 132 阅读 · 0 评论 -
数组的应用
文章目录一、二分查找法二、双向链表三、计数排序法四、三路快排一、二分查找法在一个有序的数字数组中查询一个元素的下标可以将数组分半,然后用中间那个值和要查询元素的值进行比较若相等则查出若小于该元素,则弃掉右半部分开始对左边的进行二分查找法若大于该元素,则弃掉左半部分开始对右边的进行二分查找法一直这样循环,直到查到为止 ,若查不到返回-1public int Binary(int[] arr,int ele) throws IllegalAccessException {原创 2021-06-20 20:35:09 · 100 阅读 · 0 评论 -
数据结构一、数组(玩转动态数组)
文章目录数组描述创建数组1.先创建一个数组类2.数组的声明3.扩容与缩容4.向数组中添加元素5.查询数组中的元素6.修改指定位置元素7.移除指定位置的元素8.根据元素判断数组中是否存在9.重新toString数组描述数组就是一个容器数组的声明 int[] arr = new int[10];数组的优缺点数组的优点:快速查询数组的缺点:增删慢索引数组最好应用在索引有语义的情况下索引最好有语义,也可以没有语义并非所有有语义的数字都可以作为数组的索引,eg:身原创 2021-06-20 20:10:50 · 133 阅读 · 1 评论