![](https://img-blog.csdnimg.cn/20200516104800620.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
java数据结构
自己实现java数据结构
Hai-Yang-code
这个作者很懒,什么都没留下…
展开
-
二维数组转为稀疏数组再复原
package com.qcby.bilbil;/** * @author HuangHaiyang * @date 2020/07/01 * @description: description * @version: 1.0.0 */public class SparseArray { public static void main(String[] args) { //原始数组 int[][] originalArray=new int [...原创 2020-07-01 20:47:29 · 127 阅读 · 0 评论 -
jdk1.8的HashMap中的红黑树插入,为什么是红黑树而不是AVL树
jdk1.8HashMap的源码树节点static final class TreeNode<K,V> extends LinkedHashMap.Entry<K,V> { TreeNode<K,V> parent; // red-black tree links TreeNode<K,V> left; TreeNode<K,V> right; TreeNode<K,V&g原创 2020-06-19 14:01:19 · 1186 阅读 · 1 评论 -
理解一下红黑树
定义红黑树是每个节点都带有颜色属性的二叉查找树,颜色或红色或黑色。在二叉查找树强制一般要求以外,对于任何有效的红黑树我们增加了如下的额外要求:性质1.每个节点或是红色或是黑色。性质2. 根节点是黑色。性质3.所有叶节点都是黑色。(叶子是NUIL节点)性质4. 每个红色节点的两个子节点都是黑色。(从每个叶子到根的所有路径上不能有两个连续的红色节点)性质5. 从任一节点到其每个叶子的所有路径都包含相同数目的黑色节点。下面是一棵简单的红黑树,可以到它就符合上述性质画一个红黑树我们规定新插入原创 2020-06-19 11:10:21 · 491 阅读 · 0 评论 -
平衡二叉树
二叉查找树二叉树具有以下性质:左子树的键值小于根的键值,右子树的键值大于根的键值。平衡二叉树平衡二叉树在符合二叉查找树的条件下,还满足任何节点的两个子树的高度差不大于1。(一种特殊的二叉查找树)LL旋转 左子树的左子树导致不平衡LR 左子树的右子树导致不平衡RR 右子树的右子树导致不平衡RL 右子树的左子树导致不平衡...原创 2020-05-16 14:54:41 · 527 阅读 · 0 评论 -
由中序遍历和后序遍历 输出先序遍历
由中序遍历和后序遍历 输出先序遍历public static void main(String[] args) { Scanner input=new Scanner(System.in); String mid=input.nextLine(); String next=input.nextLine(); System.out.p...原创 2020-05-07 12:33:36 · 629 阅读 · 0 评论 -
创建哈夫曼树
首先找到每一个字母出现的次数作为该字母的权重然后每一次找权重最小的两个构建哈夫曼树,把新生成的节点加到原列表中再选择两个最小值的形成新的数构建好了之后按照左0右1的原则给字符串进行编码,由此编码可以读出该字符串package com.qcby.Tree;public class Node { private String ch; private int num; private Node left; private Node right; pub.原创 2020-05-15 08:21:31 · 989 阅读 · 0 评论 -
完全二叉树
满二叉数(一棵二叉树的结点要么是叶子结点,要么它有两个子结点,如果一个二叉树的层数为K,且结点总数是(2^k) -1,则它就是满二叉树。)完全二叉树(若设二叉树的深度为k,除第 k 层外,其它各层 (1~k-1) 的结点数都达到最大个数,第k层所有的结点都连续集中在最左边,这就是完全二叉树)广度建立和广度遍历广度优先遍历,借助于一个队列来实现,首先把root放到队列当中,之后进入循环,拿出第一个元素,访问,依次把它的左右孩子放到队列当中(如果有的话),继续循环。pack..原创 2020-05-15 08:21:14 · 7083 阅读 · 0 评论