数据结构
藤原豆腐店-
准备迁移博客,新博客地址:https://www.jianshu.com/u/16102e967c0f
展开
-
二叉树的遍历,完全二叉树
完全二叉树:叶子结点只能出现在最下层和次下层,并且最下层的叶子结点集中在树的左部。没有左叶子结点就一定没有右叶子结点。并且完全二叉树度为1的节点数量要么是0个,要么是1个。 二叉树的总出度=n0+n1+n2。并且n0=n2+1。二叉树有三种遍历方式:前序遍历:根-左-右 中序遍历:左-根-右 后序遍历:左-右-根 遍历的算法有两种,一种是递归...原创 2019-02-26 16:58:00 · 707 阅读 · 0 评论 -
二叉树深度优先遍历(递归、非递归)、广度优先遍历、构建二叉树
public class BinaryTree { static class TreeNode{ int value; TreeNode left; TreeNode right; public TreeNode(int value){ this.value = value; } ...原创 2019-02-26 16:56:51 · 3208 阅读 · 3 评论 -
终于搞懂了什么是二叉查找树,AVL树,B树,B+树,红黑树
二叉查找树:二叉查找树就是左结点小于根节点,右结点大于根节点的一种排序树,也叫二叉搜索树。也叫BST,英文Binary Sort Tree。二叉查找树比普通树查找更快,查找、插入、删除的时间复杂度为O(logN)。但是二叉查找树有一种极端的情况,就是会变成一种线性链表似的结构。此时时间复杂度就变味了O(N),为了解决这种情况,出现了二叉平衡树。 平衡二叉树:平衡二叉树全称平衡二...原创 2019-02-26 16:55:13 · 16475 阅读 · 1 评论 -
top K问题
在大规模数据处理中,经常会遇到的一类问题:在海量数据中找出出现频率最好的前k个数,或者从海量数据中找出最大的前k个数,这类问题通常被称为top K问题。例如,在搜索引擎中,统计搜索最热门的10个查询词;在歌曲库中统计下载最高的前10首歌等。针对top K类问题,通常比较好的方案是分治+Trie树/hash+小顶堆(就是上面提到的最小堆),即先将数据集按照Hash方法分解成多个小数据集,然后使...转载 2019-03-28 12:02:21 · 204 阅读 · 0 评论 -
HashMap的死循环问题
HashMap在put操作时,如果达到了扩容条件,会触发resize操作,对map进行扩容。public V put(K key, V value) { if (key == null) return putForNullKey(value); int hash = hash(key); int i = indexFor(hash, table.len...原创 2019-03-20 18:34:25 · 617 阅读 · 0 评论