
数据结构
文章平均质量分 58
柠七99
这个作者很懒,什么都没留下…
展开
-
哈希冲突
在保存元素不是固定范围时,哈希冲突有可能避免吗?不能避免;因为存储的元素范围远远大于数组的长度但可以尽可能的减少冲突,那么如何减少?数组大小用素数(Java中不太用) 当 index = hashValue % arr.length 时hash函数要尽可能的均匀如何解决hash冲突?线性探测 拉链法(Java的hashMap选用这种)1. 线性探测法解决hash冲突例:int[] arr = new int[11]存放元素:7,31,5,8,...原创 2021-05-16 11:15:28 · 484 阅读 · 1 评论 -
搜索树的应用——Map和Set接口
MapSet方法名说明boolean add(E e)添加元素(但是重复元素不能添加成功)–O(lon(n))void clear()清空集合 --O(1)int size()返回set中的元素个数boolean isEmpty()检测set是否为空boolean remove(Object o)删除集合中的o–O(lon(n))boolean contains(Object o)判断o是否在集合中–O(lon(n))retainAll原创 2021-05-12 22:34:25 · 180 阅读 · 0 评论 -
有关二叉搜索树的基本操作
特点:左子树上的所有节点的值均小于根节点的值,右子树上所有节点的值均大于根节点的值,且每个节点均遵守上述条件。特别注意:二叉搜索树中不允许出现重复的key!!!例:中序:0 1 2 3 4 5 6 7 8 9 ——有序所以可知二叉搜索中的中序遍历有序代码实现:一个类;结点类一个类:二叉搜索树查找方法属于搜索树,其方法与对象有关,需使用非静态方法...原创 2020-11-11 20:56:23 · 134 阅读 · 0 评论 -
堆(向下调整、向上调整)及应用(优先级队列,TopK)
堆(逻辑上是完全二叉树,实质上用数组保存):1.在一个集合数据中,找出最大值(大堆)或者最小值(小堆)**大堆:**任意结点的值都大于其子树中结点的值**小堆:**任意结点的值都小于其子树中结点的值2.一棵树逻辑上的完全二叉树可以通过数组保存根据完全二叉树由数组保存后的下标有:已知父结点下标parentIndex:左孩子的下标:2parentIndex + 1右孩子的下标:2parentIndex + 2已知结点下标:childIndex父结点的下标:(childIndex -原创 2020-10-17 18:05:03 · 273 阅读 · 0 评论 -
二叉树前中、后、序遍历的非递归遍历
package frank.test3;import java.util.Stack;class TreeNode { int val; TreeNode left; TreeNode right; TreeNode(int val) { this.val = val; }}public class test { //前序 public static void preOrder(TreeNode root) { Stack<Tr原创 2021-04-12 19:37:29 · 82 阅读 · 0 评论 -
深度优先遍历(DFS)和广度优先遍历(BFS)的应用
深度优先遍历:DFS,原则就是沿着一条路径一直找到最深的那个节点,当没有子节点的时候,返回上一级节点,寻找其另外的子节点,继续向下遍历,没有就向上返回一级,直到所有的节点都被遍历到,每个节点只能访问一次。广度优先遍历:BFS,原则就是对每一层的节点依次访问,一层访问结束后,进入下一层,直到最后一个节点,同样每个节点都只访问一次对于下面的二叉树:深度优先搜索的遍历顺序:1-2-3-4-5-6-7-8-9广度优先搜索的遍历顺序:1-2-6-2-3-7-5-8-9广度优先搜索的适用场景:层序遍历、最短原创 2021-03-25 09:15:53 · 1670 阅读 · 0 评论 -
二叉树的基础认识与训练
二叉树二叉树的前序遍历:([根][左][右] )/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * TreeNode(int val, TreeNode原创 2021-03-24 19:33:05 · 158 阅读 · 0 评论 -
队列---双端队列与循环队列
接口与类的继承关系:双端队列双端队列:两端都可以进行入队和出队操作的队列Deque接口—>LinkedList(实现类) 公共方法:isEmpty() / size() / contains() … 当栈使用时:压栈:push(e)查看栈顶元素:peek()弹出栈顶元素:pop() 当单向队列使用时:插入队列:add(e)查看队首元素:element()取出队首元素:remove()方法:方法解释addFirst(e) / ofterFirs原创 2021-03-23 20:35:24 · 541 阅读 · 0 评论 -
栈和队列的方法总结及使用
栈(Stack):后进先出(LIFO)方法解释push(e)压栈pop()出栈peek()取栈顶元素(不删除)boolean empty()判断栈是否为空队列(Queue):先进先出(FIFO)方法解释add(e) / ofter(e)入队列,add()抛出异常,offer()返回特殊值remove() / pool()出队列,remove()抛出异常,offer()返回特殊值element() / peek()取原创 2021-03-11 21:35:48 · 208 阅读 · 0 评论