
数据结构
原总破局
刻意训练,积极反馈。
展开
-
使用二叉堆来实现优先队列
优先队列的特点,root元素就是这个队列的最大值。二叉堆是一颗完全二叉树package com.yuanxuzhen.heap;import java.util.ArrayList;import java.util.Arrays;/** * 堆我们可以理解为完全二叉树 * 完全二叉树是的特点是节点一层一层的摆放 * 我们这里使用数组来实现二叉树。有下面这样的算法leftChild=index * 2 + 1, rightChild = index * 2 + 2, parent =原创 2021-10-19 15:40:40 · 304 阅读 · 0 评论 -
java如何连续删除list中的数据
java连续删除list中的数据一个list列表中有40个数据,连续删除第20到30个数据。错误示范 public static void main(String[] args) { List<Integer> list = new ArrayList<>(); for(int i = 0; i < 40; i++ ){ list.add(i); } for(int i = 2原创 2021-10-19 11:19:34 · 1205 阅读 · 0 评论 -
使用二分搜索树实现map
二分搜索树的相关内容二分搜索树-------1_qq_15255121的专栏-优快云博客二分搜索树-------2 查询与遍历_qq_15255121的专栏-优快云博客二分搜索树-------3 删除元素_qq_15255121的专栏-优快云博客下面是具体的代码package com.yuanxuzhen.map;import com.yuanxuzhen.tree.YuanBST;public class YuanBstMap <K extends Compara原创 2021-10-18 15:45:45 · 93 阅读 · 0 评论 -
使用链表实现Map
map我们又叫为映射,即用一个key对应一个value。底层实现可以是链表,也可以是树。我们先用链表实现。package com.yuanxuzhen.map;public interface Map<K, V> { void add(K key, V value); V remove(K key); boolean contains(K key); V get(K key); void set(K key, V value); int原创 2021-10-15 14:56:29 · 463 阅读 · 0 评论 -
用Linklist实现集合set
Linklist的实现同二分搜索树一致。因为set不能存储重复的元素。所以在使用链表作为底层结构实现set的时候,需要先判断是否存在这个元素,再添加。public class YuanLinklistSet<T> implements Set<T>{ LinkedList<T> linkedList; public YuanLinklistSet() { linkedList = new LinkedList<>()原创 2021-10-14 16:46:55 · 205 阅读 · 0 评论 -
用二分搜索树实现集合set
下面的三节我们实现了二分搜索树二分搜索树-------1_qq_15255121的专栏-优快云博客二分搜索树-------2 查询与遍历_qq_15255121的专栏-优快云博客二分搜索树-------3 删除元素_qq_15255121的专栏-优快云博客二分搜索树是一个底层结构,我们可以在其上面实现我们复杂的数据结构。我们再复习下二分搜索树的特点1、每个节点最多只有两个子节点2、左节点<根节点<右节点,中序遍历就是将树中的数据提取出来,并从小到大排列3、最原创 2021-10-14 16:13:05 · 135 阅读 · 0 评论 -
二分搜索树-------3 删除元素
获取最小元素,并删除 /** * 二分搜索树的特点,每个节点最多只有两个子节点,左节点 < 根节点 < 右节点 * 所以最左侧的节点就是最小值 * @return */ public T minmum(){ if(size == 0){ throw new IllegalArgumentException("树为空"); } return minmum(root).ent原创 2021-10-13 16:46:30 · 175 阅读 · 0 评论 -
二分搜索树-------2 查询与遍历
二分搜索树查询数据是否在当前树中,因为左右节点还是二分搜索树,我们可以使用递归来进行查询。 /** * 判断当前二叉树是否包含元素entry * 由于二叉树的子树叶是二叉树,所以我们要使用递归 * @param entry * @return */ public boolean contains(T entry){ return contains(root, entry); } /** * 判断当前节原创 2021-10-13 14:58:59 · 148 阅读 · 0 评论 -
二分搜索树-------1
我们讲解二分搜索树前,我们先讲一下什么是二叉树这样的结构就是二叉树二叉树有什么特点呢?只有一个根节点 每个节点的子节点最多只有两个那么根据上面的定义下面也是二叉树什么是满二叉树除最后一层无任何子节点外,每一层上的所有结点都有两个子结点的二叉树。什么是二分搜索树呢二叉树 每个节点的值大于左子树上所有节点的值 每个节点的值小于右子树上所有节点的值 每个子树也是二分搜索树 二分搜索树不一定是满二叉树 存储的元素必须具有可比性如果我们要设计成可以...原创 2021-10-12 15:51:50 · 146 阅读 · 0 评论