
数据结构
文章平均质量分 71
LifeIsStudy
爱好编程,正在学习算法,python,c/c++等~~~
展开
-
树状数组(binary indexed tree)
树状数组是一种用于查询区间和的数据结构。比如对于数组a[1,2,3,4,5,6,7,8,9,10],我们要知道它的前4项和,我们就需要把这前四个一个个加起来才能得到结果,也就是O(K)(前k项和)的复杂度。如果查询次数少,k也比较小还可以接受,但是在大规模的查询和数据量时,这个复杂度就太高了。树状数组就是为了解决这个问题而创造出来的,它能在log(k)的复杂度内查询区间和。树状数组其实就是原创 2017-01-05 18:42:42 · 420 阅读 · 0 评论 -
跳表(skiplist)
之前看随机化的平衡树时看到了跳表这种数据结构,在网上查了些资料,自己实现了一下,确实比各种平衡树好写多了,并且效率也不低。跳表这种数据结构其实就是对链表的扩展,采用多层链表的形式,每高一层节点数量大约减少1/2。例如:1-------------->5----------------->null1----->3------>5----->7-------->null原创 2017-01-09 21:18:07 · 313 阅读 · 0 评论 -
Morris Traversal
网上看到的总结的很好Morris Traversal文章:点击打开链接 原文链接本文主要解决一个问题,如何实现二叉树的前中后序遍历,有两个要求:1. O(1)空间复杂度,即只能使用常数空间;2. 二叉树的形状不能被破坏(中间过程允许改变其形状)。通常,实现二叉树的前序(preorder)、中序(inorder)、后序(postorder)遍历有两个常用的方法:一是递转载 2017-01-11 11:59:36 · 356 阅读 · 0 评论