摘要: 红黑树 普通的二叉搜索树高度如果较高时,一些集合操作可能不比链表上执行的快,而红黑树属于“平衡”搜索树的一种,可以保证在最坏情况下基本动态集合操作的时间复杂度为O(lgn).(一)红黑树的性质 红黑树是一棵二叉搜索树,在每个结点上增加了一个存储位来表示结点的颜色,可以为RED或者BLACK。通过一些约束可以保证没有一条路径会比其他路径长出2倍,因而是近似于平衡的。红黑树的5个性质:1. 每个结点或是红色的,或是黑色的。2. 根结点是黑色的。3. 每个叶节点(NIL)是黑色的。4. 如果一个结点是红色的,则它的两个子结点都是黑色的。5. 对每个结点,从该结点到其所有后代叶结点的简单路径上,均.. 阅读全文
posted @ 2014-03-22 20:41 Jolin123 阅读(1386) 评论(0) 推荐(0) 编辑
摘要: 题目传送门:2500. 看风景思路: 可以先将n个人的身高读进数组h[n]中,找到一个下标i,使得h[0]到h[i]的递增子序列加上h[i + 1]到h[n - 1]的递减子序列的和最长即可。为了找到这个下标i,可以从0遍历到n - 1,以每一个下标为断点计算一次即可。 用数组i[n]存放到每个点的最长递增子序列,即i[k]表示[0,k]的最长子序列长度,这样要算i[k],可以从0到k - 1遍历,如果找到j(0 i[k]并且h[j] 2 using namespace std; 3 4 int heights[1000]; 5 6 int main(){ 7 int n;... 阅读全文
posted @ 2014-03-22 09:43 Jolin123 阅读(199) 评论(0) 推荐(0) 编辑