数据结构之AVL平衡二叉树

版权声明:版权声明:本文为博主原创文章,博客地址:https://blog.csdn.net/imbingoer 未经博主允许不得转载 https://blog.csdn.net/imbingoer/article/details/86088609

平衡二叉树(Balanced Binary Tree)又被称为AVL树(有别于AVL算法),且具有以下性质:它是一 棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。这个方案很好的解决了二叉查找树退化成链表的问题,把插入,查找,删除的时间复杂度最好情况和最坏情况都维持在O(logN)。但是频繁旋转会使插入和删除牺牲掉O(logN)左右的时间,不过相对二叉查找树来说,时间上稳定了很多。

旋转

涉及到插入或者删除操作时,可能会引发二叉树的不平衡。需要对二叉平衡树进行旋转。
下图涉及到四类插入操作,都引发了不平衡。

  1. 左子树左孩子(1)。单向右旋
  2. 左子树右孩子(4)。先左后右旋转
  3. 右子树左孩子(3)。先右后左旋转
  4. 右子树右孩子(6)。单向左旋转

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/imbingoer/article/details/86088609
今日推荐