平衡二叉排序树(Balanced Binary Tree或Height-Balanced Tree)是在1962年由Adelson-Velskii和Landis提出的,一种高度平衡的排序二叉树,其每一个节点的左子树和右子树的高度差最多等于1,又称AVL树。 如果一棵二叉树既是二叉排序树又是平衡二叉树,称为平衡二叉(查找)排序树(Balanced Binary Sort Tree) 。 平衡二叉树...
首先研究一下平衡二叉树与非平衡二叉树的关系。 图3表示的是一棵平衡二叉树,与它对应的任意一棵非平衡二叉树都可以重复按照如下方式变换而来——在维持二分查找树的前提下,从高度较小的子树中取出一个节点A,插入到高度较大的子树中——如图4所示。 图3 平衡二叉树与非平衡二叉树的转换 图4 平衡二叉树与非平衡...
一棵平衡二叉树是因为新插入结点而导致不平衡的,所以我们只需要对最小失衡子树进行平衡调整,整棵树也会跟着平衡(插入结点导致高度改变,平衡调整是使得高度复原),所以并不需要整棵树进行调整。因为如果一个树很大,调整方法很多,就很繁琐,也很容易乱。 "LL型":在最小失衡子树的左孩子的左子树上插入了新结点。 右旋...
通过平衡因子的判断,可以及时发现不平衡的节点,并采取相应的调整措施以保持平衡二叉树的平衡性,确保树的高度在可控范围内,从而提高查找、插入和删除操作的效率。 左旋转 左旋是平衡二叉树中的一种旋转操作,用于调整不平衡节点及其子节点之间的关系。左旋的目的是将不平衡节点向左移动,并提升其右子节点作为新的父节点,...
左右子树的高度差不超过1的有序二叉树。 平衡的概念:结点的平衡因子 = 结点的左子树深度 — 结点的右子树深度。 若平衡因子的取值为-1、0或1时,该节点是平衡的,否则是不平衡的。 旋转: 由于平衡因子不平衡,所以引入了旋转的概念,来使得二叉树平衡
图5.1 是一颗平衡二叉树 图5.1 在此平衡二叉树插入节点 99 ,树结构变为: 动图5.2 在动图 5.2 中,节点 66 的左子树高度为 1,右子树高度为 3,此时平衡因子为 -2,树失去平衡。 在动图 5.2 中,以节点 66 为父节点的那颗树就称为最小失衡子树。
左右子树的高度差不超过1的有序二叉树。 平衡的概念:结点的平衡因子 = 结点的左子树深度 — 结点的右子树深度。 若平衡因子的取值为-1、0或1时,该节点是平衡的,否则是不平衡的。 旋转: 由于平衡因子不平衡,所以引入了旋转的概念,来使得二叉树平衡
若向平衡二叉树中插入一个新结点后破坏了平衡二叉树的平衡性。首先要找出插入新结点后失去平衡的最小子树根结点的指针。然后再调整这个子树中有关结点之间的链接关系,使之成为新的平衡子树。当失去平衡的最小子树被调整为平衡子树后,原有其他所有不平衡子树无需调整,整个二叉排序树就又成为一棵平衡二叉树。
一、平衡二叉树的概念 平衡二叉树(Balanced binary tree)是由阿德尔森-维尔斯和兰迪斯(Adelson-Velskii and Landis)于1962年首先提出的,所以又称为AVL树。定义:平衡二叉树或为空树,或为如下性质的二叉排序树:(1)左右子树深度之差的绝对值不超过1;(2)左右子树仍然为平衡二叉树.平衡因子BF=左子树深度-右子树...
1.1 二叉排序树介绍 二叉排序树:BST (Binary Sort(Search) Tree), 对于二叉排序树的任何一个非叶子节点,要求左子节点的值比当前节点的值小,右子节点的值比当前节点的值大。 特别说明:如果有相同的值,可以将该节点放在左子节点或右子节点 ...