AVL树(平衡二叉搜索树)
AVL树
- 一、AVL树
- 1、AVL树的概念
- 2、AVL树节点的定义(描述)
- 3、AVL树的插入
- 4、AVL树的旋转
- (1)左单旋
- (2)右单旋
- (3)左右双旋
- (4)右左双旋
- (5)插入的整体代码
- 5、AVL树的验证
- 6、AVL树完整代码
一、AVL树
1、AVL树的概念
二叉搜索树虽可以缩短查找的效率,但如果数据有序或接近有序二叉搜索树将退化为单支树,查找元素相当于在顺序表中搜索元素,时间复杂度位O(N),效率低下。因此,两位俄罗斯的数学家G.M.Adelson-Velskii和E.M.Landis在1962年发明了一种解决上述问题的方法:
当向二叉搜索树中插入新结点后,如果能保证每个结点的*左右子树高度之差的绝对值不超过1(需要对树中的结点进行调整,让它即满足二叉搜索树的要求,也接近于一颗完全二叉树),即可降低树的高度,从而减少平均搜索长度。
一棵AVL树或者是空树,或者是具有以下性质的二叉搜索树:
AVL树(平衡二叉搜索树)相关推荐
- 《恋上数据结构第1季》平衡二叉搜索树、AVL树
AVL树 二叉搜索树缺点分析 改进二叉搜索树 平衡(Balance) 理想平衡 如何改进二叉搜索树? 平衡二叉搜索树(Balanced Binary Search Tree) AVL树 BST 对比 ...
- 五.树,二叉树,二叉搜索树(BST)和自平衡二叉搜索树(AVL)
1.树 树是一种数据结构 比如:目录结构 树是一种可以递归定义的数据结构 树是由n个节点组成的集合: 如果 n=0, 那这是一颗空树 如果 n>0, 那存在1个节点作为树的根节点,其他节点可以分 ...
- 看动画学算法之:平衡二叉搜索树AVL Tree
简介 平衡二叉搜索树是一种特殊的二叉搜索树.为什么会有平衡二叉搜索树呢? 考虑一下二叉搜索树的特殊情况,如果一个二叉搜索树所有的节点都是右节点,那么这个二叉搜索树将会退化成为链表.从而导致搜索的时间复 ...
- 数据结构(三):非线性逻辑结构-特殊的二叉树结构:堆、哈夫曼树、二叉搜索树、平衡二叉搜索树、红黑树、线索二叉树
在上一篇数据结构的博文<数据结构(三):非线性逻辑结构-二叉树>中已经对二叉树的概念.遍历等基本的概念和操作进行了介绍.本篇博文主要介绍几个特殊的二叉树,堆.哈夫曼树.二叉搜索树.平衡二叉 ...
- 数据结构与算法-平衡二叉搜索树
平衡二叉搜索树 1.自平衡的二叉搜索树 2.平衡 (1)空树平衡 (2)非空树平衡 左右子树平衡 左右子树高度差绝对值 <= 1 3.平衡因子 左右子树的高度差的衡量值 -1 0 1 (一)平衡 ...
- VC++2012编程演练数据结构《9》平衡二叉搜索树
平衡二叉搜索树 任何结点的左子树和右子树高度最多相差1的二叉搜索树. (1)AVL树的插入算法 a. 插入结点之后仍然是AVL树,则不调整: b. 插入结点之后不再满足AVL树条件,则进行调整,根据导 ...
- 【二叉树进阶】红黑树(Red Black Tree) - 平衡二叉搜索树
文章目录 一.红黑树的概念 二.红黑树的性质 2.1 红黑树和AVL树效率对比 三.红黑树的结构(KV模型) 四.红黑树的插入 4.1 插入节点 4.2 平衡化操作(难点) 4.2.1 情况一 4.2 ...
- 二叉搜索树、平衡二叉搜索树和红黑树
文章目录 一. 二叉搜索树(Binary Sort Tree) 二. 二叉平衡搜索树(AVL) 三. 红黑树 一. 二叉搜索树(Binary Sort Tree) 二叉搜索树,又称为二叉排序树(二叉查 ...
- 最适合新手看的平衡二叉搜索树(BBST)的创建,包含详细过程,一看就会(C++版)
写在前面:本人大二小白,本篇文章是我第一次写博客,用来记录我的学习过程,我想将我在学习中遇到的各种的问题和困难写下来,希望大家能够不要犯同样的错误.我会尽可能的详细的把每一个步骤都解释清楚,那么废话不 ...
- 高度平衡二叉搜索树(AVLTree)
高度平衡二叉搜索树(AVLTree) 目录 AVL树的概念 AVL树节点的定义 AVL树的插入 AVL树的旋转 右单旋 左单旋 左右双旋 右左双旋 AVL树的验证 代码实现 AVL树的概念 二叉搜索树 ...
最新文章
- 三层交换机----VRRP协议学习
- Java虚拟机的功能
- 我是一只IT小小鸟读书笔记3
- python与 积分
- java线程池之一:创建线程池的方法
- android 应用监听home键,Android 监听Home键
- js 点击闭包_【JS进阶】Javascript 闭包与Promise的碰撞
- 吴恩达机器学习训练2:Logistic回归
- cv::cornerSubPix()亚像素角点检测
- 一个空格引发的Bug! ----CSV输出和CSV读入
- JavaWeb项目为什么我们要放弃jsp?为什么要前后端解耦?为什么要前后端分离?2.0版,为分布式架构打基础。
- 华为HCSE培训教材
- 介绍一款rar文件密码破解利器——RAR Password Unlocker
- dcos master挂掉后 slave上面的container会咋样
- Unity3d设置鼠标指针的样式
- wannier拟合能带总是拟合不上_科学网-Wannier90输入文件中num_wann, num_bands, 和energy window等参数设置规则-李云海的博文...
- arduino密码锁代码
- 同步磁阻电机simulink仿真下载
- 3D 渲染和游戏引擎技术信息来源
- ubuntu挂载4T新硬盘记录
热门文章