平衡二叉树

简介:
平衡二叉树
平衡二叉树又称AVL树。它或者是一颗空树,或者是具有下列性质的二叉树:它的左子树和右子树都是
平衡二叉树,且左子树和右子树的深度之差绝对值不超过1.若将二叉树上节点的平衡因子BF(Balance Facter)
定义为该节点的左子树的深度减去它的右子树的深度,则平衡二叉树上所有结点的平衡因子只可能是-1,0和1。
只要二叉树上有一个结点的平衡因子的绝对值大于1,则该二叉树就是不平衡的。
失去平衡后进行调整的规律可归纳为下列4种情况:
(1)单向右旋平衡处理:由于在*a的左子树根结点的左子树上插入结点,*a的平衡因子由1增至2,致使以*a为
根的子树失去平衡,则需要进行一次向右的顺时针旋转操作。
(2)单向左旋平衡处理:由于在*a的右子树根结点的右子树上插入结点,*a的平衡因子由-1变为-2,致使以*a为
根结点的子树失去平衡,则需要进行一次向左的逆时针旋转操作。
(3)双向旋转(先左后右)平衡处理:由于在*a的左子树根结点的右子树上插结点,*a的平衡因子由1增指2,致
使以*a为根结点的子树失去平衡,则需要进行两次旋转(先右旋后左旋)操作。
 
 
 
 
 
 


本文转自莫水千流博客园博客,原文链接:http://www.cnblogs.com/zhoug2020/p/4220347.html,如需转载请自行联系原作者
相关文章
|
4月前
|
存储 C++
二叉树搜索树的应用
二叉树搜索树的应用
32 1
|
3月前
|
C++
平衡二叉树(C++)
平衡二叉树(C++)
17 1
二叉搜索树之AVL树
二叉搜索树之AVL树
|
8月前
|
算法
平衡二叉树(AVL树)
平衡二叉树(AVL树)
50 0
|
9月前
|
存储 算法 关系型数据库
有了二叉树,平衡二叉树为什么还需要红黑树
有了二叉树,平衡二叉树为什么还需要红黑树
62 0
有了二叉树,平衡二叉树为什么还需要红黑树
|
10月前
|
算法
二叉搜索树、平衡二叉树
一、二叉搜索树 这里我们不用太多书面化的语言来定义,笔者认为在讨论数据结构、算法相关的内容时用太多书面化、学术化的语言是一种让人很烦的事情。咬文嚼字,不便于读者理解。 简单来说二叉树搜索树,其实就是用来做二分查找的一种二叉树。 特点是:根节点的左子树值均小于根节点的值,根节点的右子树值均大于根节点的值。 比如123 4 567建树的结果就是
37 0
|
11月前
平衡二叉树的实现
平衡二叉树的实现
|
JavaScript 前端开发 Java
搜索二叉树、完全二叉树、满二叉树、平衡二叉树
搜索二叉树、完全二叉树、满二叉树、平衡二叉树
103 0
二叉树、平衡二叉树AVL、红黑树、B树、B+树
B树的阶数等于叶节点最大关键字数量+1(因为关键字两边都有指向子节点的指针-分叉) 在m阶(m叉)B树中除根结点外,任何节点至少[m/2]个分叉,即至少[m/2]-1个关键字, [ ]代表向上取整。 节点内的关键字采用顺序查找或二分查找。 因为关键字太少会导致树变高,降低查找效率。另外就是保证同级子树的高度相同-平衡。

热门文章

最新文章