二叉查找树、AVL树、红黑树原理及应用

一、二叉查找树

1、概念:二叉查找树也称为有序二叉查找树,满足二叉查找树的一般性质

2、特点:

              a、任意节点左子树不为空的话,则左子树的值均小于根节点的值。

              b、任意节点右子树不为空的话 ,则右子树的值均大于根节点的值。

              c、任意节点的左右子树也分别是二叉查找树。

3、局限性及应用

              一个二叉查找树由n个节点的值随机构成,在某些情况下,二叉查找树会退化成一个有n个节点的线性链表,如果我们的根节点选择最小或最大的数,那么二叉查找树就会退化成线性结构,因此在二叉查找树的基础上又出现了AVL树和红黑树,它们两个都是基于二叉查找树,只是在二叉查找树的基础上又对其做了限制。

二、AVL树

1.概念:AVL树是带有平衡因子的二叉查找树,一般是用平衡因子差值判断是否平衡并通过旋转来实现平衡。

2.特点:左右子树的高度差不超过1

3.局限性:由于通过旋转来维护AVL树的平衡所付出的代价大于从中获得的效率,所以大多数的场景下用红黑树。

4.应用:AVL树适合插入和删除次数较少,查找次数多的情况。

三、红黑树

1.概念:红黑树是二叉查找树的一种,但是在节点增加一个存储位置表示节点的颜色,它是一种弱平衡二叉树。

2.性质:

          a、每个节点非红即黑

          b、根节点是黑色

          c、每个叶子节点都是黑色

          d、如果一个节点是红色则它的两个儿子都是黑色

          e、对于任意节点,其到叶子节点的每条路径都包含相同的黑色节点个数

3.应用:应用于STL和IO多路复用epoll的实现用红黑树组织管理sockfd,以支持快速增删查改。

 

    原文作者:AVL树
    原文地址: https://blog.csdn.net/sinat_39527002/article/details/82227845
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞