
数据结构
文章平均质量分 74
Leon__CAI
这个作者很懒,什么都没留下…
展开
-
寻找数组中前K个最小的数(Kth smallest element)---(堆排序的应用)
日常生活中我们总是遇到求解一个数组的最小值或者最大值等问题,这些问题基本上都可以在原创 2014-11-07 14:48:38 · 2516 阅读 · 0 评论 -
大-小顶混合堆的实现与应用(a min-max heap)
一般情况下我们使用的堆都是大顶堆或者小顶堆,其能实现在常数时间内获得数组的最大值或者最小值,同时满足在对数时间内删除和插入元素。但是如果要同时实现即能在常数时间内获得最大值和最小值,又能在对数时间内删除和插入元素,通常情况下的堆就不能满足上述要求了。为此介绍一种新的数据结构min-max heapmin-max heap 是一颗完全二叉树,但是二叉树的奇数层存的是max元素,偶数层存的是min原创 2014-11-18 17:49:19 · 2429 阅读 · 1 评论 -
二叉树转换为双向环形链表
二叉树的节点与双向环形链表的节点类似,均含有两个指向不同方向的指针,因此他们之间的转化是可以实现的。下面介绍一种递归的实现方法。由于方法比较简单,就直接上代码了二叉树的建立node* create(const string& s){ node* res = new node; res->left = nullptr; res->right = nullptr; res->s =原创 2014-11-25 15:15:35 · 1168 阅读 · 0 评论 -
中序遍历-----二叉查找树的遍历(迭代版,不使用栈或者队列)
二叉查找树(Binary Search Tree)的遍历的方法有很多,通常使用的是递归的遍历,其便于理解,但是使用递归的话会造成程序运行的空间浪费,效率并不高。为此可以使用一个栈来模拟递归的过程,实现迭代版的二叉查找树的遍历。但是会使用到额外的存储空间,虽说在运行效率上比递归版的有所提高,但是额外的存储空间还是一定的浪费。但是如何减少额外的存储空间呢?我们知道二叉查找树是可以转换为一个双向环形链表原创 2014-11-25 11:09:41 · 1688 阅读 · 0 评论 -
欧拉回路(Euler Circuit)
定义:若一副图中从某个顶点A走出,经过图中的所有的边,且每条边只经过一次,则称这个环为欧拉回路,如果某幅图含有这样的环,则这幅图叫做欧拉图。如何判断一幅图是不是欧拉图,也即一幅图中是否含有欧拉回路。如果一幅图中所有顶点的出度等于入度,且此图为强连通图,则此图含有欧拉回路,这幅图为欧拉图。如何在程序中实现判断一副图是否含有欧拉回路呢?如果存在,则将路径打印出来。判断是否为原创 2014-12-09 23:15:10 · 6318 阅读 · 0 评论 -
LeetCode--Min Stack
Design a stack that supports push, pop, top, and retrieving the minimum element in constant time.push(x) -- Push element x onto stack.pop() -- Removes the element on top of the stack.top() -- Get原创 2015-01-15 20:17:01 · 751 阅读 · 0 评论