AVL树的旋转
来源:互联网 发布:知乎关注排行 编辑:程序博客网 时间:2024/05/22 23:38
AVL树的旋转
http://blog.csdn.net/gabriel1026/article/details/6311339
平衡二叉树在进行插入操作的时候可能出现不平衡的情况,AVL树即是一种自平衡的二叉树,它通过旋转不平衡的节点来使二叉树重新保持平衡,并且查找、插入和删除操作在平均和最坏情况下时间复杂度都是O(log n)
AVL树的旋转一共有四种情形,注意所有旋转情况都是围绕着使得二叉树不平衡的第一个节点展开的。
1. LL型
平衡二叉树某一节点的左孩子的左子树上插入一个新的节点,使得该节点不再平衡。这时只需要把树向右旋转一次即可,如图所示,原A的左孩子B变为父结点,A变为其右孩子,而原B的右子树变为A的左子树,注意旋转之后Brh是A的左子树(图上忘在A于Brh之间标实线)
2. RR型
平衡二叉树某一节点的右孩子的右子树上插入一个新的节点,使得该节点不再平衡。这时只需要把树向左旋转一次即可,如图所示,原A右孩子B变为父结点,A变为其左孩子,而原B的左子树Blh将变为A的右子树。
3. LR型
平衡二叉树某一节点的左孩子的右子树上插入一个新的节点,使得该节点不再平衡。这时需要旋转两次,仅一次的旋转是不能够使二叉树再次平衡。如图所示,在B节点按照RR型向左旋转一次之后,二叉树在A节点仍然不能保持平衡,这时还需要再向右旋转一次。
4. RL型
平衡二叉树某一节点的右孩子的左子树上插入一个新的节点,使得该节点不再平衡。同样,这时需要旋转两次,旋转方向刚好同LR型相反。
0 0
- AVL树的旋转
- AVL树的旋转
- AVL树的旋转
- AVL树的旋转
- AVL树的旋转
- AVL树的旋转
- AVL树的旋转
- AVL树的旋转
- AVL树的旋转
- AVL树的旋转
- AVL树的旋转
- AVL树的旋转
- AVL树的旋转
- AVL树的旋转
- AVL树的旋转
- AVL平衡树的旋转
- AVL树旋转的操作
- AVL树的旋转操作
- 远程service下载,使用aidl,队列下载Client端
- Visual Studio 2013开发 mini-filter driver step by step (3) - 查看运行结果
- 【leetcode】unique-binary-search-trees
- How to Make cURL works with cmake
- 如何查看自己电脑的CPU是几核
- AVL树的旋转
- 关于BIOS加载BOOT.S的经典解答
- Hadoop MapReduce纵表转横表 与 横表转纵表
- 07、发布项目到nexus
- 『ANDROID』Android中的onWindowFocusChanged()方法详解
- 线段树+扫描线
- Big Event in HDU
- 冒泡排序
- 互联网产品以快制胜还是精品制胜?