【数据结构】02_平衡二叉树到底是个什么玩意儿?

【数据结构】02_平衡二叉树到底是个什么玩意儿?

定义

AVL树:是最早被发明的自平衡二叉查找树。在AVL树中,任一节点对应的两棵子树的最大高度差为1,因此它也被称为高度平衡树。查找、插入和删除在平均和最坏情况下的时间复杂度都是 O ( l o g n ) O(log {n}) O(logn)。增加和删除元素的操作则可能需要借由一次或多次树旋转,以实现树的重新平衡。AVL树得名于它的发明者G. M. Adelson-Velsky和Evgenii Landis,他们在1962年的论文An algorithm for the organization of information 中公开了这一数据结构。 节点的平衡因子是它的左子树的高度减去它的右子树的高度(有时相反)。带有平衡因子1、0或 -1的节点被认为是平衡的。带有平衡因子 -2或2的节点被认为是不平衡的,并需要重新平衡这个树。平衡因子可以直接存储在每个节点中,或从可能存储在节点中的子树高度计算出来。

平衡二叉树具备以下几个特性:
1.需要平衡,像斜二叉树那种一看就不平衡
2.平衡认为是动作和结果,比较斜的树给你调整平衡了
3.左右子树高度差不能大于1
4.左右子树也是平衡二叉树

平衡在哪里

怎样保证二叉树平衡呢,我们就看下以下几个场景:

单旋转平衡

在这里插入图片描述

  • 我们依次插入1 2 3的时候,由于是个右斜树,需要通过旋转来达到树平衡
  • 根据左结点小于父结点,右结点大于父节点的原则,只需要左旋一次即可达到平衡状态

双旋转平衡

在这里插入图片描述

  • 原先我们的树是一个平衡状态,当插入90的时候叶子结点高度差大于1了,破坏了平衡
  • 为了达到平衡,我们做了两步操作:首先左子树以结点50为顶点的树先进行左旋,然后100为顶点的树再进行右旋
    在这里插入图片描述

总结

平衡二叉树能够保证我们在进行插入操作的时候树的深度最小,插入查找的速率最快。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值