当前位置:神舟问>百科问答>什么是AVL

什么是AVL

2024-06-29 15:28:07 编辑:join 浏览量:568

什么是AVL

AV来自L1.品质管理系统中,AVL是ApprovedVendorList,及一般意义上的合格供应商目录。2.在计算机科学中,AVL树是最先发明的自平衡二叉查找树。在AVL树中任何节点的两个儿子子树的高360问答度最大差别为一,所以它也被称为高度平衡树。查找、插入和删除在平均和最坏情况下都是O(logn)。增加和删除可能需要通过一次或数除失多次树旋转来重新平衡这个树。AVL树得名于它的发明者G.M.Adelson-Velsky和E.M.Landis,他们在1962年的论文"Analgorithmfortheorganizationofinformation"中发表了它。节点的平衡因子是它的右子树的高度减去它的左子树的高度。带有平衡因子1、0或-1的节点被认为是平衡的。带有平衡因子-2或2的节点被认为是不平衡的,并需要重新平衡这个树。平衡因子可以直接存储在每个节点中,或从可能存储在节点中的子树高度计算出来。操作AVL树的基本操作一般涉及运做同在不平衡的二叉查找树所运做的同样的算法。但是要进行预先或随后拿斤煤月传雷用两谈易做一次或多次所谓的"A沿轮又身晚编损VL旋转"。假设由于在二叉排序树班上插入结点而失去平衡的最小子树根结点的指针为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的深度不变;

标签:AVL

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