红黑树简述

面试时候被问到了,

 

二叉查找树: Binary Search Tree(BST)

 

1.左子树上所有结点的值均小于或等于它的根结点的值。

2.右子树上所有结点的值均大于或等于它的根结点的值。

3.左、右子树也分别为二叉查找树。

 

比如我想找10 ,右边比9大,到13 左边比13小 到11 左边比11小 到10

 

二分查找的思想

 

缺陷:

 

初始树:

插入结点

失去了平衡,查找能力变成了线性。

 

 

红黑树:

插入多个节点后也能自平衡的二叉查找树。

应用:JDK集合类TreeMap和TreeSet底层就是红黑树实现,Java8中HashMap也用到了红黑树。 

 

 

1.节点是红色或黑色。

2.根节点是黑色。

3.每个叶子节点都是黑色的空节点(NIL节点)。

4 每个红色节点的两个子节点都是黑色。(从每个叶子到根的所有路径上不能有两个连续的红色节点)

5.从任一节点到其每个叶子的所有路径都包含相同数目的黑色节点。

下图中这棵树,就是一颗典型的红黑树:

*左旋转

*右旋转

 *自平衡的策略

 

posted @ 2018-07-18 01:14  hh9515  阅读(393)  评论(0编辑  收藏  举报