图2.2 也不是平衡二叉树,因为虽然任何一个节点的左子树与右子树都是平衡二叉树,但高度之差已经超过 1 。 图2.2 图2.3 是平衡二叉树。 图2.3 3. 平衡因子 定义:某节点的左子树与右子树的高度(深度)差即为该节点的平衡因子(BF,Balance Factor),平衡二叉树中不存在平衡因子大于 1 的节点。在一棵平衡二叉树中...
首先研究一下平衡二叉树与非平衡二叉树的关系。 图3表示的是一棵平衡二叉树,与它对应的任意一棵非平衡二叉树都可以重复按照如下方式变换而来——在维持二分查找树的前提下,从高度较小的子树中取出一个节点A,插入到高度较大的子树中——如图4所示。 图3 平衡二叉树与非平衡二叉树的转换 图4 平衡二叉树与非平衡...
平衡二叉树是一种特殊的二叉搜索树,它具有以下特点: 每个节点的左子树和右子树的高度差不超过1。 所有的子树也都是平衡二叉树。 通过保持平衡性,平衡二叉树可以在最坏情况下仍然具有较好的性能,保证查找、插入和删除操作的时间复杂度为O(log n)。 平衡二叉树的常用实现方法有红黑树、AVL、替罪羊树、Treap、伸展树...
可以采用动态平衡技术保持一个平衡二叉树。构造平衡二叉树的时候,也可以采用相同的方法,默认初始时,是一个空树,插入节点时,通过动态平衡技术对二叉树进行调整。 Adeleon-Velskii和Landis提出了一个动态地保持二叉排序树平衡的方法,其基本思想是:在构造二叉排序树的过程中,每当插入一个结点时,首先检查是否因插入而破坏...
图一中左边二叉树的节点45的左孩子46比45大,不满足二叉搜索树的条件,因此它也不是一棵平衡二叉树。 右边二叉树满足二叉搜索树的条件,同时它满足条件二,因此它是一棵平衡二叉树。 平衡因子:可通过计算非叶子结点的平衡因子来判断该树是否为平衡二叉树(叶子节点的平衡因子均为0)。
当平衡二叉树中存在某个结点的平衡因子的绝对值大于1,则该平衡树失衡。 平衡因子大于2,或者小于-2的结点称为失衡结点 最小失衡子树:从新插入结点开始向上寻找第一个失衡结点,以该结点为根的子树就称为最小失衡子树。 二、相关操作 1.平衡二叉树的结构 ...
平衡二叉树的旋转分类 平衡二叉树在插入和删除的时候都有可能发生旋转来维持平衡,总得来说,旋转分四种情形: (1)左旋转 如下图,对二叉搜索树分别插入1,2,3升序序列,会导致树向右倾斜,这个我们需要左旋来平衡树: 第一张图标记了,当插入3之后,根节点1失衡了,因为1节点没有左子树,所以左子树的高度等于0,而右子...
这种结构通过约束子树高度差异,使得树整体高度维持在对数级别,从而保证插入、删除和查找操作的时间复杂度稳定在O(logn)范围。相较于普通二叉搜索树容易出现链化导致性能退化为O(n)的情况,平衡二叉树通过动态调整树结构解决了这一缺陷。 平衡二叉树的核心特征体现在平衡因子上。每个节点的平衡因子定义为左子树高度减去右...
平衡二叉树: 高度的概念:距离根节点有多少层 左右子树的高度差不超过1的有序二叉树。 平衡的概念:结点的平衡因子 = 结点的左子树深度 — 结点的右子树深度。 若平衡因子的取值为-1、0或1时,该节点是平衡的,否则是不平衡的。 旋转: 由于平衡因子不平衡,所以引入了旋转的概念,来使得二叉树平衡 ...
平衡二叉树(Balanced binary tree)是由阿德尔森-维尔斯和兰迪斯(Adelson-Velskii and Landis)于1962年首先提出的,所以又称为AVL树。定义:平衡二叉树或为空树,或为如下性质的二叉排序树:(1)左右子树深度之差的绝对值不超过1;(2)左右子树仍然为平衡二叉树.平衡因子BF=左子树深度-右子树深度.平衡二叉树每个...