二叉查找树总结
1.二叉查找树
特性:
树枝分二叉,左子树中节点小于当前节点,右子树中节点都大于当前节点。其中无相等节点。按照中序遍历完可为一个递增序列。
基于二分查找可以加快查找速度,但是由于其没有保证平衡性,容易退化成单链而树高扩增。
2.AVL二叉查找树
特性:
在二叉查找树的基础上,增加一条性质:每个节点的左右树高不超过1.
严格保证了平衡性,树高受到控制,利于查询,但是,当添加或者删除节点时,树的旋转调整耗费较大。
3.红黑树
特性:
在二叉查找树基础上,给每一个节点添加颜色(红黑)信息,来限制树高(确保没有一条路径大于其他路径两倍)的同时,减少旋转次数。
1.每个节点非黑即为红
2.根节点为黑
3.叶节点为黑空
4.红妈妈有黑儿子
5.每条路径都包含相同的黑色节点
6.每个节点到其所有叶节点的路径都包含相同数量的黑色节点
适用于查找和更改操作都比较频繁的情况,不是严格的平衡树。
应用场景:
1.Java中的TreeMap
2.Nginx的红黑树任务定时器, 因其有序性而能快速检索出离当前时间最近的任务。