二叉树 红黑树

从开源项目中,总结三个用到红黑树的地方,并分析如何实现。

 

 

案例一:服务器高并发IO的keepalive方案,满足以下几个需求

1.每个IO都是自己的时间戳

2.每个IO收到自己的beat后,重置自己的定时器

3.若IO定时器没有收到beat,则执行IO的回调函数,并重置定时器

4.若再次没有收到beat,销毁IO,注销定时器

 

案例二:设计一个线程或者进程的运行体R与运行体调度器S的结构体

1.运行体R:包含运行状态(新建,准备,挂起,IO等待读,IO等待写,睡眠,延时,退出),运行体回调函数,回调参数

2.调度器S:包含栈指针,栈大小,当前运行体

3.调度器S:包含执行集合(就绪,延时,睡眠,等待)

 

平衡二叉树

强平衡:左右子树的高度不超过1

 

 

红黑树

红黑树是如何做到平衡的

概念

左右旋

插入   三种情况

删除   四种情况

 

性质:

1.每个节点是红的或黑的

2.根节点是黑的

3.每个叶子节点是黑的

4.如果一个节点是红的,则它的两个儿子是黑的

5.对每个节点,从该节点到其子孙节点的所有路径上的包含相同数目的黑节点

 

posted @ 2020-02-12 22:02  -Ryan-  阅读(124)  评论(0编辑  收藏  举报