面试时候被问到了,
二叉查找树: 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.从任一节点到其每个叶子的所有路径都包含相同数目的黑色节点。
下图中这棵树,就是一颗典型的红黑树:
*左旋转
*右旋转
*自平衡的策略