1.二叉搜索树(Binary Search Tree)
二叉搜索树:又称为二叉排序树, 属于树的一种, 通过二叉树将数据组织起来, 树的每个节点都包含了健值key、数据值data、左子节点指针、右子节点指针。其中健值key是最核心的部分, 它的值决定了树的组织形状; 数据值data是该节点对应的数据。
特点:
(1)左右子树也分别是二叉搜索树。
(2)左子树的所有节点key值都小于它的根节点的key值。
(3)右子树的所有节点key值都大于他的根节点的key值。
(4)二叉搜索树可以为一棵空树。
2.AVL树(Balanced binary search tree)
AVL树:平衡二叉树,也称平衡二叉搜索树。本质也是一棵二叉搜索树,不同的是他通过一定机制能保证二叉搜索树的平衡,平衡的二叉搜索树的查询效率更高。
特点:
(1)AVL树是一棵二叉搜索树。
(2)AVL树的左右子节点也是AVL树。
(3)AVL树拥有二叉搜索树的所有基本特点。
(4)每个节点的左右子节点的高度之差的绝对值最多为1,即平衡因子为范围为[-1,1]
3.红黑树(Red-Black Tree)
红黑(Red-black) 树:是一种自平衡二叉查找树,它与AVL树类似, 都在插入和删除操作时能通过旋转操作保持二叉查找树的平衡, 以便能获得高效的查找性能。它可以在O(logn) 时间内做查找, 插入和删除等操作。对于AVL树来说, 红黑树牺牲了部分平衡性以换取插入/删除操作时少量的旋转操作, 整体来说性能要优于AVL树。
特点:
(1)节点是红色或黑色。
(2)根节点是黑色。
(3)每个叶节点(NIL节点) 是黑色的。
(4)每个红色节点的两个子节点都为黑色。(从每个叶子到根的所有路径上不能有两个连续的红色节点)
(5)从任一节点到其每个叶子的所有路径都包含相同数目的黑色节点。
(6)最长路径不超过最短路径的2