![](https://img-blog.csdnimg.cn/20190906120919441.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
数据结构
Bob__yuan
这个作者很懒,什么都没留下…
展开
-
【红黑树】RB-tree
一、红黑树定义 红黑树五条性质:红黑树是每个节点都带有颜色属性的二叉查找树,颜色只能为红色或黑色;根节点是黑色;所有叶子节点(即NULL)均为黑色;从每个叶子到根的所有路径上不能有两个连续的红色节点(也就是每个红色节点的子节点只能是黑色。);从任一节点到其每个叶子的所有路径都包含相同数目的黑色节点。 上边五条性质决定了红黑树是有平衡性的(因为从根节点到叶节点最长路径最多是最短...原创 2019-10-16 13:59:26 · 177 阅读 · 0 评论 -
【hash表】hash表平均查找长度(ASL)
hash 表在处理 collision 的时候有很多种方式,比如 线性探测(linear probing)、二次探测(quadratic probing)、开链法(seperate chaning) 等。 本文记录使用开链法的情况下,Hash 表查找成功和查找不成功的平均查找长度(ASL - ),其他方法同理。 首先开链法是指,每一个表格元素维护一个list,hash function...原创 2019-08-28 14:00:41 · 7865 阅读 · 1 评论 -
【并查集】Union Find
LeetCode - 547. Friend CirclesThere are N students. Some of them are friends, while some are not. Their friendship is transitive in nature.For example, if A is a friend of B, and B is a friend of C...原创 2019-08-24 12:28:45 · 159 阅读 · 0 评论 -
【二叉树】重建,已知前序、中序,已知中序、后序
f 对于一棵二叉树而言,遍历方式基本分为三种:前序、中序、后序。 想要通过已有的遍历顺序重建二叉树,需要两种遍历方式,其中必须包括中序遍历。这是因为前序和后序只能提供哪个是根节点(两种方式提供的信息其实是一样的,只不过提供方式稍有不同),不能提供左右子树的信息,想要把左右子树区分开,一定要用中序遍历。因为在中序遍历中,知道了根节点的位置,那么它左边就都是左子树的节点,右边就都是右子树的...原创 2019-08-16 15:05:11 · 392 阅读 · 0 评论 -
【二叉树】遍历(递归、迭代、Morris Traversal)
二叉树的遍历,是程序员面试的最基本问题,对于基础分为三种遍历顺序:前序、中序、后序,这个 “前、中、后” 都是指根,也就是对应先根序、中根序、后根序,左右子节点的顺序默认都是先左后右。 LeetCode 中有详细的解释: https://leetcode.com/explore/learn/card/data-structure-tree/134/traverse-a-tree/992/...原创 2019-08-14 18:42:01 · 472 阅读 · 0 评论 -
【Trie】 (Prefix Tree) - 前缀树、字典树
LeetCode - 208. Implement Trie (Prefix Tree) Trie, 又称前缀树或字典树,是一种有序树,用于保存关联数组,其中的键通常是字符串。与二叉查找树不同,键不是直接保存在节点中,而是由节点在树中的位置决定。一个节点的所有子孙都有相同的前缀,也就是这个节点对应的字符串,而根节点对应空字符串。一般情况下,不是所有的节点都有对应的值,只有叶子节点和部分内部节点...原创 2019-08-11 21:38:39 · 439 阅读 · 0 评论 -
链表正向、反向相加
就是原封不动的这道题:LeetCode - 445. Add Two Numbers IIYou are given two non-empty linked lists representing two non-negative integers. The most significant digit comes first and each of their nodes contai...原创 2019-07-15 20:43:26 · 632 阅读 · 0 评论 -
【C++】list splice、LRU cache
在做 LeetCode - 146. LRU Cache 的时候用到了 list 的 splice 功能,做一个记录。一、list::splice 先讲 splice 功能。splice 是剪接、胶接的意思,比如剪接电影、胶接磁带这样的,用在 list 上就是在一个 list 中剪接上另一个 list 的部分或全部内容。英文介绍如下:Transfer elements from l...原创 2019-09-06 15:17:33 · 555 阅读 · 0 评论 -
哈夫曼编码、解码,哈夫曼树
原创 2019-10-08 13:31:56 · 2178 阅读 · 0 评论