二叉树 红黑树

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

案例一:服务器高并发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.对每个节点,从该节点到其子孙节点的所有路径上的包含相同数目的黑节点

原文地址:https://www.cnblogs.com/Ryans-World/p/12301253.html