如何用Haskell写一颗红黑树 "同步更新于Candy?的新家" Candy?在上学期的数算课上学了红黑树,但是他一直没写过。 最近他入门了一下Haskell,得知用Haskell可以很方便实现各种树结构,于是就去学了一下如何用Haskell写红黑树,发现只要不到60行(包括空行和类型签名)! 下 ...
分类:
其他好文 时间:
2020-02-11 19:32:36
阅读次数:
84
封装基于 BinaryTreeOperations 的 红黑树(一种自平衡的二叉查找树)。 除了提供 BinaryTreeOperations 中的部分基础接口外,增加按键的插入 和 按键或节点指针的删除操作。 在阅读本文前,您应该先了解二叉树中的旋转是怎么回事(相关文章很多且简单,笔者不再赘述)。 ...
分类:
其他好文 时间:
2020-02-09 23:51:14
阅读次数:
59
之前也没有系统的学过数据结构,但是平时用到的数组,链表等还是比较简单的,理解的时候即便没有接触过但是撸一撸源码,看一看画的图,基本上也就会了,树,二叉树,二叉搜索树,平衡二叉树,2-3树(完美平衡二叉树),红黑树。这次主要是在整理Java基本的数据类型Collection和Map子类的时候,发现要想 ...
分类:
其他好文 时间:
2020-02-07 22:36:41
阅读次数:
75
一颗红黑树是满足下面红黑性质的二叉搜索树 ①每个结点或是红的,或是黑的。 ②根结点是黑的 ③每个叶结点(NIL)是黑的 ④如果一个结点是红色的,则它的两个子结点是黑色的。 ⑤对每个结点,从该结点到其所有后代叶结点的简单路径上,均包含相同数目的黑色结点。 插入时总是要考虑它的叔叔,删除时总要考虑它的兄 ...
分类:
其他好文 时间:
2020-02-06 23:23:32
阅读次数:
80
二叉树的基本操作,为 二叉查找(搜索、排序)树、二叉平衡树(AVL树)、红黑树 等提供基础接口。 名称空间:namespace BTO 基础接口如: ① 遍历操作: 递归 和 非递归 版本的 先序、中序、后序 遍历。 层序遍历。 接口原型:void xxxTraversal(_Node*& _nod ...
分类:
其他好文 时间:
2020-02-06 23:11:01
阅读次数:
84
红黑树是什么? 其实也是平衡二叉树,只是给每个节点标了红黑颜色 为什么需要红黑树? 红黑树其实基础还是二叉查找树,只是因为二叉查找树很容易出现不平衡的情况,最坏情况相当于O(n),红黑树和AVL树应运而生,AVL树的话,因为平衡度要求是[-1,1]太严格,所以插入和删除的时候的效率并不是很高,比不上 ...
分类:
其他好文 时间:
2020-02-06 01:13:39
阅读次数:
75
hashmap默认16,超过后提供加载因子0.75 超过75%自动扩容,不能小于75%(浪费空间),扩容后链表内容重新排序,碰撞概率降低 数组——链表——红黑树 每个链表长度大于8并且总容量大于64,链表会转变成红黑树(除了添加外,都比链表快) hashmap hashset concurrenth ...
分类:
编程语言 时间:
2020-02-05 13:53:11
阅读次数:
83
题解 题不难,记录一下红黑树特征。 👉 每个结点是黑色或者红色。 👉 根结点是黑色。 👉 每个叶子结点(NULL)是黑色。 👉 如果一个结点是红色的,则它的子结点必须是黑色的。 👉 每个结点到叶子结点所经过的黑色结点的个数相同。 代码 #include<bits/stdc++.h> usi ...
分类:
其他好文 时间:
2020-02-02 18:08:24
阅读次数:
59
二叉查找树(BST)具备什么特性呢?1.左子树上所有结点的值均小于或等于它的根结点的值。2.右子树上所有结点的值均大于或等于它的根结点的值。3.左、右子树也分别为二叉排序树。查找结点里面的值 的方式就是二分查找的思想 查找次数就是树的高度 二叉查找树可以任意地构造 向一方倾斜的二叉树是不平衡的,查询 ...
分类:
其他好文 时间:
2020-01-31 18:55:12
阅读次数:
121
在之前学习的HashMap触发红黑树条件的知识点中,有一个步骤是resize(), 再来了解一下这块的知识 HashMap是JAVA最常用的集合之一,用来存储Key-Value这种键值对形式的数据,内部通过哈希表,让存取的效率最好的时候可以达到O(1),实际使用中可能存在hash冲突,引入了链表和红 ...
分类:
其他好文 时间:
2020-01-27 19:17:41
阅读次数:
78