Java集合13 - 二叉搜索树、平衡二叉树、红黑树特点总结

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

猜你喜欢

转载自blog.csdn.net/qq_36756682/article/details/111827773