一、二叉查找树
1、递归遍历一颗二叉查找树的时间复杂度:
best:O(logn) worst:O(n)
2、查询二叉查找树的时间复杂度:
best:Olog(n) worst:On
3、查找前驱和后继的时间复杂度:
一般说前驱或后继是指在中序遍历下的。
时间复杂度是O(logn)
4、插入和删除元素
插入:时间复杂度 O(logn)
删除:删除的元素为z;
1) 如果z没有子女,则修改其父节点p[z],使NIL为其子女,
2) 如果节点z只有一个子女,则可以通过在其子节点与父节点间建立一条链来删除z,
3) 如果节点z有两个子女,先删除z的后继y,再用y的内容来代替z的内容。
以上可知,一颗高度为h的二叉查找树可以实现任何一种基本的动态集合操作,如:
SEARCH, PREDECESOR, SUCCESSOR, MINIMUN, MAXIMUM, INSERT, DELETE, 其时间复杂度都是O(h),即:O(logn)
但是在最坏的情况下, 很多动态集合操作就不是logn了,接下来我们要分析的红黑树是许多”平衡的“查找树中的一种,它能保证在最坏情况下,基本的动态集合操作时间为logn。
二、红黑树
关于红黑树的讲解,我还没有看的很明白,给大家推荐大神的博客:skywang12345
讲的很细致,但是有些错误,评论里也有提到,大家多关注理论分析!
一起加油,我亲爱的狗子们~~~