平衡二叉树和二叉排序树的关系
平衡二叉树和二叉排序树并没有直接的关系,但是二叉排序树的查找效率与二叉树的形态有关,所有当我们希望二叉排序树的形态是均匀的时候,这样的二叉树就被称为平衡二叉树。
1. 二叉排序树
二叉排序树(Binary Sort Tree),又称二叉查找树(Binary Search Tree),亦称二叉搜索树。
- 二叉排序树定义:
二叉排序树或者是一棵空树,或者是具有下列性质的二叉树:
- 若左子树不空,则左子树上所有节点的值均小于它的根节点的值;
- 若右子树不空,则右子树上所有节点的值均大于它的根节点的值;
- 左、右子树也分别为二叉排序树。
如图下图所示就是一棵二叉排序树:
对二叉排序树进行中序遍历,便可得到一个按关键字排序的序列,如对上图进行一次中序遍历可得到一个有序序列:10,42,45,55,58,63,67,70,83,90,98
- 二叉排序树的查找分析
就查找的平均时间性能而言,二叉排序树上的查找与折半查找类似,但就维护表的有序性而言,二叉排序树更高效,因为它无需移动节点,只需修改指针即可完成二叉排序树的插入和删除操作。
二叉排序树查找在在最坏的情况下,需要的查找时间取决于树的深度:
- 当二叉排序树接近于满二叉树时,其深度为 ,因此最坏情况下的查找时间为O(),与折半查找是同数量级的。
- 当二叉树如下图所示形成单枝树时,其深度为n,最坏情况下查找时间为O(n),与顺序查找属于同一数量级。
所以为了保证二叉排序树查找有较高的查找速度,希望该二叉树接近于满二叉树,或者二叉树的每一个节点的左、右子树深度尽量相等
2. 平衡二叉树
通过上面的分析可知,二叉排序树的查找效率与二叉树的形态有关,我们希望二叉排序树的形态是均匀的,这样的二叉树称为平衡二叉树。
-
平衡二叉树定义
平衡二叉树(Balanced Binary Tree),它是一棵空树,或者是具有以下性质:
- 它的左右两个子树的深度差的绝对值不超过1;
- 它的左右两个子树也分别是平衡二叉树。
将二叉树节点的左子树的深度减去它的右子树的深度称为平衡因子BF,则平衡二叉树上所有节点的平衡因子只可能是-1、0和1,如下图左边的为平衡二叉树,右边的为非平衡二叉树。
因为平衡二叉树上任何节点的左、右子树的深度之差都不会超过1,可以证明它的深度和n个节点的完全二叉树的深度+1是同数量级的。因此,它的平均查找次数也是和+1同数量级的。
要构造一棵平衡二叉树,Georgii M. Adelson-Velskii 和 Evgenii M. Landis 提出了一种动态保持二叉平衡树的方法,其基本思想是:在构造二叉排序树的时候,每当插入一个节点时,先检查是否因插入节点而破坏了树的平衡性,如果是,则找出其中最小不平衡子树,在保持排序树的前提下,调整最小不平衡子树中各节点之间的连接关系,以达到新的平衡,所以这样的平衡二叉树简称AVL树。其中最小平衡子树是指:离插入节点最近,且平衡因子绝对值大于1的节点作为根节点的子树。
- 调整最小不平衡子树一般有四种情况:
- 单向右旋(LL型): 插入位置为左子树的左子树,以左子树为轴心,进行单次向右旋转,如下图所示。节点旁边的数字为该节点的平衡因子,I节点为当前插入节点(如果I节点处于正中,则表示I节点既可以是左孩子也可以是右孩子。
注意LL型,以中间节点为轴心进行旋转。为什么这里I为BL左孩子不能将B-BL-I作为LL型,是因为A节点才是离I节点最近的平衡因子绝对值>1的子树,其余节点的平衡因子绝对值都没有超过1;同理当I为BL右孩子,也不能将B-BL-I作为LR型。
2. 单向左旋(RR型): 插入位置为右子树的右子树,右子树为轴心,进行单次向左旋转
注意RR型,以中间节点为轴心进行旋转。这里I为左右子树并不影响其实RR型,原理同上。
3. 双向旋转先左后右(LR型):插入位置为左子树的右子树,要进行两次旋转,先向左旋转,再向右旋转。
插入节点为左孩子:注意为什么不能B-C-I作为子树将其定为RL型,原理同RR型中的解释,对于LR型,,是以R端或者L靠近插入节点端作为旋转轴心(如下图相当于先旋转以B为根的子树后,成为了LL型,再旋转以A为根的子树)。
插入节点为右孩子:
4. 双向旋转先右后左(RL型):插入位置为右子树的左子树,进行两次调整,先右旋转再左旋转;处理情况与LR类似。
插入节点为左孩子:
插入节点为右孩子:
经过上面的我们可以发现,平衡因子与类型有很大的关系,需要以离插入节点最近且平衡因子绝对值>1的节点作为根节点的子树进行判定是哪种类型。
- 练习
如下图所示,先插入节点2后,成为LL型,然后整体右旋处理后平衡。
再依次插入8和6之后,节点5的平衡因子绝对值>1,成为RL型,所以先以5为根节点,将其子树8-6右旋(成为RR型),然后将5为根节点的整棵树再左旋。
继续插入节点9后,节点4的平衡因子>1,成为RR型,所以以4为根节点,将整体左旋。
以上是平衡二叉树和二叉排序树的关系的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

国产AI黑马DeepSeek强势崛起,震撼全球AI界!这家成立仅一年半的中国人工智能公司,凭借其免费开源的大模型DeepSeek-V3和DeepSeek-R1,在性能上与OpenAI等国际巨头比肩,甚至在成本控制方面实现了突破性进展,赢得了全球用户的广泛赞誉。DeepSeek-R1现已全面上线,性能媲美OpenAIo1正式版!您可以在网页端、APP以及API接口体验其强大的功能。下载方式:支持iOS和安卓系统,用户可通过应用商店下载;网页版也已正式开放!DeepSeek网页版官方入口:ht

2025年开年,国产AI“深度求索”(deepseek)惊艳亮相!这款免费开源的AI模型,性能堪比OpenAI的o1正式版,并已在网页端、APP和API全面上线,支持iOS、安卓和网页版多端同步使用。深度求索deepseek官网及使用指南:官网地址:https://www.deepseek.com/网页版使用步骤:点击上方链接进入deepseek官网。点击首页的“开始对话”按钮。首次使用需进行手机验证码登录。登录后即可进入对话界面。deepseek功能强大,可进行代码编写、文件读取、创

DeepSeek:火爆AI遭遇服务器拥堵,如何应对?DeepSeek作为2025年开年爆款AI,免费开源且性能媲美OpenAIo1正式版,其受欢迎程度可见一斑。然而,高并发也带来了服务器繁忙的问题。本文将分析原因并提供应对策略。DeepSeek网页版入口:https://www.deepseek.com/DeepSeek服务器繁忙的原因:高并发访问:DeepSeek的免费和强大功能吸引了大量用户同时使用,导致服务器负载过高。网络攻击:据悉,DeepSeek对美国金融界造成冲击,