当前位置:大问百书>百科问答>什么是AVL

什么是AVL

2024-09-26 22:51:47 编辑:zane 浏览量:586

什么是AVL

的有关信息介绍如下:

什么是AVL

AVL1.品质管理系统中,AVL是ApprovedVendorList,及一般意义上的合格供应商目录。2.在计算机科学中,AVL树是最先发明的自平衡二叉查找树。在AVL树中任来自何节点的两个儿子子树的高度最大差别为一,所以它也360问答被称为高度平衡树。查找、插入和删除在平均和最坏情况下都是O(logn)。增加和删除可能需要通过一次或多次树旋转来重新平衡这个树。AVL树得名于它的发明者G.混晚M.Adelson-Velsk坚普高稳位干y和E.M.Landis,他们在1962年的论文"Analgorithmfortheorganizationofinformation"中发表了它。节点的平衡因令米总军接关调子是它的右子树的高度年减去它的左子树的高度。带有平衡因子1、0或-1的节点被认为是平衡的。带有平衡因子-2或2的节点被认为是不平衡的,并需要重新平衡这个树。平衡因子可以直接存储在每个节点中,或从可能存储在节点中的子树高度计算出来。操作AVL事均位华径圆早应树的基本操作一般涉及运做同在不平衡的二叉查找树所运做的同样的算法。但是要进行预先或随后做一次或多次所投镇模饭映统连谓的"AVL旋转"。假设由于在二叉排序树上插入结点而失去平衡的最小子树根结点的指针为a(即a是离插入点最近,深家政令非且平衡因子绝对值超过1的祖先结点),则失去平衡后进行进行的规律可归纳为下列四种情况:单向右旋平衡处理RR:由于在*a的左子树根结点的左子树上插入结点,*a的平衡因子由1增至2,致使以*a为根的子树失去平衡,则需进行一次右旋转操作;单向左旋平衡处理LL:由于在*a的右子树根结点的右子树上插入结点,*a的平衡因子由-1变为-2,致使以*a为根的子树失去平衡,则需进行一次左旋转操作林象谁;双向旋转(先左后右)平衡处理LR:由于在*a的左子树根结点的右子树上插入结点,*a的平衡因子由1增至2,致使以*a为根的子树失去平衡,则需进行两次季千弱旋转(先左旋后右旋)操作。双向旋转(先右后左)平衡处理RL:由于在*a的右子树根结点的左子树上插入结点,*a的平衡因子由-1变为-2,致使以*a为根的子着卫还树失去平衡,则需进济歌围装好史行两次旋转(先右旋后左旋)操作。插入向AVL树插入可以通过如同它是未平衡婷露态充女种就注审争渐的二叉查找树一样把给定的值插入树中,接着自底有改向上向根节点折回,于在插入期间成为不平衡的所有节点上进行与激干旋转来完成。因为折回到根节点国金群的路途上最多有1.5乘logn个节点,而每次AVL视住到伤背课基送步调乙旋转都耗费恒定的时间,插入处理在整体上耗费O(logn)时间功裂区波官。在平衡的的二叉排云序树BalancedBST上插入一个新的数据元素e的递归算法可描述如下:若BBST为空树,则插入一个数据元素为e的新结点作为BBST的根结点,树的深度增1;若e的关键字和BBST的根结点的关键字相等,则不进行;若e的关键字小于BBST的根结点的关键字,而且在BBST的左子树中不存在和e有相同关键字的结点,则将e插入在BBST的左子树上,并且当插入之后的左子树深度增加(+1)时,分别就下列不同情况处理之:BBST的根结点的平衡因子为-1(右子树的深度大于左子树的深度,则将根结点的平衡因子更改为0,BBST的深度不变;

版权声明:文章由 大问百书 整理收集,来源于互联网或者用户投稿,如有侵权,请联系我们,我们会立即处理。如转载请保留本文链接:https://www.dawenbaishu.com/answer/117861.html
热门文章