关于红黑树:了解是什么? 为什么设计? 会有什么效果? 什么时候用?
了解是什么?
关于红黑树的初了解可以参考:
面试常问:什么是红黑树?
为什么设计?
红黑树存在的意义是为了解决二叉树查找的缺陷
会有什么效果?
假设你计算机里存有十亿个身份证信息,你要用计算机在这些身份证信息里进行增加、删除、查找等操作,应该怎样设计程序实现这些功能?最简单的笨办法,当然是逐条比对,但是这样的操作要进行平均 次比对,也就是平均5亿次。如果应用红黑树,就只要最多 次比对,也就是最多30次。30次 vs 5亿次,程序性能提升了1600多万倍。
什么时候用?
JDK的集合类TreeMap和TreeSet底层就是红黑树,在java8中,HashMap也用到了红黑树。linux下的select有应用;STL有应用;java里的好几个数据结构也应用。