二叉查找树与红黑树 总结

一、二叉查找树

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

讲的很细致,但是有些错误,评论里也有提到,大家多关注理论分析!

一起加油,我亲爱的狗子们~~~

 

    原文作者:二叉查找树
    原文地址: https://blog.csdn.net/u013360073/article/details/81482351
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞