![](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 · 129 阅读 · 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 · 1187 阅读 · 1 评论 -
理解一下红黑树
定义 红黑树是每个节点都带有颜色属性的二叉查找树,颜色或红色或黑色。在二叉查找树强制一般要求以外,对于任何有效的红黑树我们增加了如下的额外要求: 性质1.每个节点或是红色或是黑色。 性质2. 根节点是黑色。 性质3.所有叶节点都是黑色。(叶子是NUIL节点) 性质4. 每个红色节点的两个子节点都是黑色。(从每个叶子到根的所有路径上不能有两个连续的红色节点) 性质5. 从任一节点到其每个叶子的所有路径都包含相同数目的黑色节点。 下面是一棵简单的红黑树,可以到它就符合上述性质 画一个红黑树 我们规定新插入原创 2020-06-19 11:10:21 · 492 阅读 · 0 评论 -
平衡二叉树
二叉查找树 二叉树具有以下性质:左子树的键值小于根的键值,右子树的键值大于根的键值。 平衡二叉树 平衡二叉树在符合二叉查找树的条件下,还满足任何节点的两个子树的高度差不大于1。(一种特殊的二叉查找树) LL旋转 左子树的左子树导致不平衡 LR 左子树的右子树导致不平衡 RR 右子树的右子树导致不平衡 RL 右子树的左子树导致不平衡 ...原创 2020-05-16 14:54:41 · 529 阅读 · 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 · 631 阅读 · 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 · 990 阅读 · 0 评论 -
完全二叉树
满二叉数(一棵二叉树的结点要么是叶子结点,要么它有两个子结点,如果一个二叉树的层数为K,且结点总数是(2^k) -1,则它就是满二叉树。) 完全二叉树(若设二叉树的深度为k,除第 k 层外,其它各层 (1~k-1) 的结点数都达到最大个数,第k 层所有的结点都连续集中在最左边,这就是完全二叉树) 广度建立和广度遍历 广度优先遍历,借助于一个队列来实现, 首先把root放到队列当中,之后进入循环, 拿出第一个元素,访问,依次把它的左右孩子放到队列当中(如果有的话),继续循环。 pack..原创 2020-05-15 08:21:14 · 7084 阅读 · 0 评论