平衡二叉树与红黑树的简单知识
来源:互联网 发布:touch id解锁mac 编辑:程序博客网 时间:2024/05/29 18:26
平衡二叉树由Adelson-Velskii和Landis在1962年提出,因此也成为AVL树。它是一棵空树或者是具有以下性质的二叉排序树:
(1)根结点的左子树和右子树的深度最多相差1。
(2)根结点的左子树和右子树也是二叉平衡树。
平衡因子: 节点的平衡因子是该节点的左子树和右子树的深度之差。
最小不平衡子树: 最小不平衡子树是指平衡二叉树的构造过程中,以距离插入点最近的,而平衡因子的绝对值大于1的节点为根节点的子树。
出现不平衡的情况主要有4种: RR型,RL型,LL型,LR型。(PS: 比起插入,它的删除更有刺激哦)
由于算法难度比较大,小编未能实现出来,所以提供不了源代码。其实我们不难看出,AVL树有着极高的平衡要求,即左右子树高度相差最多不能超过1,当我输出一串连续递增或递减的数字时,需要不断地调整才能保持它的平衡。由于它的高度平衡性,在插入或删除算法中,对树的旋转次数较多,所以在C++或Java等编程语言中难以广泛使用。由此我们引入了另一种算法,红黑树算法。红黑树具有以下几个特征:
(1)节点只能为红色或黑色。
(2)根节点只能为黑色。
(3)每个叶子节点(空节点)都为黑色。
(4)如果一个节点为红色,那么它的两个节点为黑色。
(5)从每个节点,从该节点到其子孙节点的所有路径上包含的相同数目的黑节点。
很明显,红黑树的平衡条件没有AVL树那么严格,因此减少插入或删除时调整的次数,每个节点的最大高度之差不超过2倍,因此它比AVL树有着更大范围地使用。由于红黑树算法也有着比较大的难度,小编也未能实现出来,所以也提供不了源代码。(红黑树的插入主要有5类型,有兴趣可以百度下)
下面附上Java的最高境界:
- 平衡二叉树与红黑树的简单知识
- 红黑树与平衡二叉树的区别
- 平衡二叉树与红黑树
- 平衡二叉树的简单建立--示例
- Treap--简单的平衡二叉搜索树
- 平衡二叉树的构造与实现
- 平衡二叉查找树的一些知识总结
- 红黑树与平衡二叉树区别?
- 数据结构之红黑树与平衡二叉树
- 平衡二叉树的
- 平衡二叉树-红黑树
- 红黑树、平衡二叉树
- 二叉排序树与平衡二叉树
- 平衡二叉树(AVL树)的简单实现
- 红黑树:自平衡的二叉查找树
- 二叉搜索树与平衡二叉树
- 关于树的总结从二叉树->二叉搜索树->平衡二叉树->红黑树->B树与B+树
- 二叉平衡树的详细实现:插入与删除
- Android模拟器Genymotion安装及使用教程详解
- 个人学习笔记----基于Spring4.3.1+mybatis+postgresql+maven搭建的个人用调度平台(一)
- Balanced Binary Tree ---LeetCode
- C语言复杂定义的读法(右左法则)
- C++ 关键字typeid 运行时类型检查
- 平衡二叉树与红黑树的简单知识
- Servlet和JSP的通信
- C#运用GmaQrCode生成二维码
- HDU 1014 G题
- DotNet中的DataTable相关操作
- C#计算时间间隔和时间所属区间的通用操作方法
- C#操作Xml的基本方法
- C#运用DocX操作文档
- C#二进制流的序列化和反序列化操作