手写数据结构-二分搜索树
1、二分搜索树基础 1、为什么要有树结构? 将数据使用树结构存储后,出奇的高效。 常见的树结构:二分搜索树/平衡二叉树(AVL 红黑树)/堆/优先队列..等 2、二叉树特点 二叉树具有唯一根节点 二叉树每个节点最多有两个孩子,每个节点最多有...
1、二分搜索树基础 1、为什么要有树结构? 将数据使用树结构存储后,出奇的高效。 常见的树结构:二分搜索树/平衡二叉树(AVL 红黑树)/堆/优先队列..等 2、二叉树特点 二叉树具有唯一根节点 二叉树每个节点最多有两个孩子,每个节点最多有...
1、基于链表的队列基础 结构特性:先进先出 实现原理:采用双指针,多维护一个指针指向队尾,向尾部进行添加操作时间复杂度会变为O(1)。 2、手写基于链表的队列及复杂度分析(和基于动态数组的循环队列对比) package com.tc.jav...
获取 IDEA 激活码、PyCharm 激活码、WebStorm 激活码和 DataGrip 激活码,提供详细破解教程与永久激活方法。支持 IDEA 永久激活与破解,免费获取注册码与激活码,解决 2024/2025 版本激活问题,轻松实现所有 JetBrains 工具的激活。
1.栈基础 结构:先进后出 2.手写基于链表的栈(和基于动态数组的栈对比) package com.tc.javabase.datastructure.linklist.stack; import com.tc.javabase.datas...
1.链表基础 之前讲到的动态数组、栈、队列,底层都是依托静态数组,靠resize解决固定容量问题。而链表是一种真正的动态线性的数据结构。 数据储存在节点(Node)中,优点: 真正的动态,不需要处理固定容量问题,缺点:丧失了随机访问的能力。...
1.循环队列 在基于动态数组的队列中我们发现,在移出队首元素时时间复杂度为O(n),为了解决这个问题,我们引出了循环队列。 实现原理:双指针,多维护一个指针指向队首,当队首元素移出时,基于数组实现的队列中的元素不需要全部向前移动一个位置,只...
1.队列基础 队列是一种先进先出的数据结构(先到先得 First In First Out) 队列也是一种线性结构 相比于数组,队列对应的操作是数组的子集 只能从一端(队尾)添加元素,从另一端(队首)取出元素 2.手写基于动态数组的队列及复...
1.栈基础 结构特性:先进后出 2.手写基于动态链表的栈 package com.tc.javabase.datastructure.array.stack; import com.tc.javabase.datastructure.arr...
1.数组基础 数组最一种存放数据的线性数据结构 ,最原始的数组是一种静态数组,需要声明数组的容量,一旦new出来数组对象大小不可改变,可以通过索引来进行数据的增删改查。我们可以通过对静态数组的二次封装来进行改进成动态数组。 数组最大的优点:...
一.什么是不可变对象 不可变对象:有一种对象只要它了就是安全的,它就是不可变对象。 一个不可变对象需要满足的条件:1.对象创建后其状态不能修改。 2.对象所有的域都是final类型。 ...
一.相关定义: 线程安全类:当多个线程访问某个类时,不管运行环境采用何种调度方式或者这些进程如何交替执行,并且在主调代码中不需要任何额外的同步或协同,这个类都能表现出正确的行为,那么就称这个类是线程安全的。 线程安全性主要体现在三个方面:原...