摘要本节在前两节(树的旋转,2-3-4树)的基础上,讨论红黑树的性质及实现。初识红黑树简介通过对2-3-4树的分析,我们认识到其直接实现比较复杂,时间开销可能会比普通BST更大。因而我们通过对普通BST增加一些信息,实现2-3-4树。这里采用的一种高效的方法,就是红黑树。基本思想是在每个结点中添加一...
分类:
其他好文 时间:
2014-11-30 19:57:03
阅读次数:
231
摘要本文主要讨论的内容包括:BST的性质以及基本操作分析。作为最基本的数据结构,二叉查找树(后文记为BST)本身不仅易于理解,代码精简,而且通过添加不同的特性,可以实现许多高级的数据结构,例如:添加颜色信息,升级为红黑树;添加高度和平衡信息,升级为AVL树;更改节点数量,成为2-3-4树等更为复杂的...
分类:
其他好文 时间:
2014-11-30 13:52:12
阅读次数:
408
性质: 节点非黑即红 根和叶子节点是黑(这里说的叶子节点指填充后的树的叶子节点,NIL节点) 红节点的父节点是黑节点 任意一个节点到以他为根的叶子节点所经过的黑节点数目(不包括自身,但包括叶子节点)的个数是一样。 红黑树可以在O(lgn)时间内完成查询搜索操作,另插入操作需要最多2次旋转,删除操作需...
分类:
其他好文 时间:
2014-11-29 00:11:59
阅读次数:
194
1、RBT#include "stdafx.h"#include#include#include#include#include#define maxn 1111111#define RED 0#define BLACK 1#define nil 0using namespace std;int n...
分类:
其他好文 时间:
2014-11-28 00:55:35
阅读次数:
311
汇总了一些set的常用语句,部分参考了这篇:http://blog.163.com/jackie_howe/blog/static/199491347201231691525484/#include实现了红黑树的平衡二叉检索树的数据结构,插入元素时,它会自动调整二叉树的排列,把元素放到适当的位置,以...
分类:
编程语言 时间:
2014-11-23 11:38:33
阅读次数:
187
Linux上直观显示红黑树结构,方便大家测试验证...
分类:
系统相关 时间:
2014-11-23 09:19:48
阅读次数:
411
Nginx的框架设计—进程模型
在这之前,我们首先澄清几点事实:
nginx作为一个高性能服务器的特点,其实这也是所有的高性能服务器的特点,依赖epoll系统调用的高效(高效是相对select/poll这些系统调用的,底层有一个链表和红黑树,避免了轮询,减少了用户空间和系统空间之间的数据传递等),非阻塞(所有的操作都是非阻塞,这样),多进程(master-slave进程模型),这些事实使得ng...
分类:
系统相关 时间:
2014-11-19 20:35:59
阅读次数:
359
强大的MAP,今天终于开始好好学习一次。map内部是用红黑树维持的有序结构。定义:mapmapStudent;查找的时间复杂度为对数级别.1.构造方法学习两种:第一种:用insert函数插入pair数据,mapStudent.insert(pair(0,"jiangjing"));第二种:用数组方式...
分类:
其他好文 时间:
2014-11-11 18:20:15
阅读次数:
191
因为仅仅看到13.3节,所以临时仅仅实现旋转和插入函数。思考:假设不带父结点,那么在须要訪问z的父结点时,我们能够借助查找函数从根结点到待查找结点z的路径上必定能找到z的父结点和祖父结点,所以由此可訪问父结点。只是这样的方法使得旋转函数时间添加到O(lgn),而插入函数也对应的添加到O(lgnlg....
分类:
其他好文 时间:
2014-11-08 14:59:18
阅读次数:
186
c++map提供了一个键值对容器,其底层实现利用了红黑树,在给定key的情况下,可以快速的找到其对应的value并进行修改(key的值是不可以发生变化的)。说明:1.头文件#include2.定义map m1;3.插入数据(1) m1["a"]=1;(2)m1.insert(map::value::...
分类:
其他好文 时间:
2014-11-07 20:39:51
阅读次数:
193