数据结构 平衡二叉树

本文介绍了平衡二叉树的概念,探讨了在二叉查找树中出现的问题及平衡二叉树如何通过限制节点度数差异来提高效率。接着详细阐述了左旋和右旋的过程,包括四种旋转情况的处理,旨在保持树的平衡,提升搜索性能。
摘要由CSDN通过智能技术生成

1. 平衡二叉树的基本概念

1.1二叉查找树的问题

在极端的情况下,二叉树就会转换成链表,高度太高,效率变低

1.2平衡二叉树的概念

任意结点的左子树或右子树的度相差 不超过1

1.3平衡二叉树的作用

通过降低树的高度,从而提高效率


2. 平衡二叉树的左旋右旋

2.1 左旋或者右旋的触发时机

当在树中进行增删操作后,如果破坏了原本树的平衡性,此时就会用左旋或右旋调整树,以达到平衡

2.2 左旋的过程

  1. 让当前结点成为当前结点右子结点的左子结点;
  2. 让当前结点的右子结点的左子结点成为当前结点的右子结点;
  3. 让当前结点的父结点指向当前结点的右子结点;

左旋:就是将结点的右侧往左拉,原先的右子结点变成新的父结点,并把多余的左子结点出让给已降级的根结点当右子结点;

2.3右旋的过程

  1. 让当前结点成为当前结点左子节点的右子结点;
  2. 让当前结点的左子结点的右子结点成为当前结点的左子结点;
  3. 让当前结点的父结点指向点前结点的左子结点;

右旋:就是将结点的左侧往右拉,原先左子结点变成了新的父结点,并 把多余的右子结点让出给已降级的根结点当右子结点


2.4平衡二叉树旋转的四种情况

2.4.1左左

  • 当某个结点的左子结点的左子树添加了一个新的结点
    • 以当前结点为基准,进行右旋

2.4.2 左右

  • 当某个节点的左子节点的右子树添加了一个新的结点
      1. 以当前结点的左子结点为基准,进行左旋
      2. 以当前结点为基准,在进行右旋

2.4.3 右右

  • 当某个结点的右子结点的右子树添加了一个新的结点
    • 以当前结点为基准,进行左旋

2.4.4右左

  • 当某个结点的右子结点的左子树添加了一个新的结点
      1. 以当前结点的右子结点为基准,进行右旋
      2. 以当前结点为基准,进行左旋
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Aming_sth

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值