平衡二叉树又称AVL树,它或者是一棵空树,或者是具有下列性质的二叉树:它的左子树和右子树都是平衡二叉树,

且左子树和右子树的深度之差的绝对值不超过1,若将二叉树上节点的平衡因子BF定义为该节点的左子树的深度减去它的右子树的深度,

则平衡二叉树上所有节点的平衡因子只可能是-1、0和1。

只要二叉树上有一个节点的平衡因子的绝对值大于1,则该二叉树不平衡。AVL树上任何节点的左右子树的深度之差都不超过1

则可以证明它的深度和log2n是同数量级的(n为节点个数)。

因此,它的平均查找长度也和log2n同数量级。

但是这个问题是针对于平均查找长度,而不是最多的查找次数:

问题具体的例子:

比如含有12个结点的平衡二叉树中查找某一个结点最多的比较次数?

这个因为问到的是具体的12个结点的平衡二叉树,此时是一个确切的问题了

可以画出这个结点数为12的平衡二叉树的图

如上图所示,比较的最多肯定是要到深度最大的结点上了,最终比较次数就是5次了,而不是 log2N<4了

设平衡二叉排序树(AVL树) 的节点个数为n,则其平均检索长度为log2n相关推荐

  1. 二叉排序树平均检索长度(ASL)的算法

    对于二叉排序树的ASL算法 二叉排序树的特点是左孩子小于根节点,右孩子大于根节点 之前寻找博客上计算ASL的算法时,看到用的是设置一个max值来判断是否换层,遍历二叉排序树,若是大于max则是属于同一 ...

  2. AVL树添加节点后的平衡操作(一)逻辑分析:左旋、右旋、双旋(超详细图解)

    AVL树 AVL树是最早发明的自平衡二叉搜索树之一,其名字来源于两位发明它的科学家G. M. Adelson-Velsky 和 E. M. Landis(来自苏联的科学家). AVL树的特点 AVL树 ...

  3. mysql b树子节点个数_MySQL 和 B 树的那些事-爱可生

    原标题:MySQL 和 B 树的那些事-爱可生 在介绍B树之前,先来看另一棵神奇的树--二叉排序树(Binary Sort Tree),首先它是一棵树,"二叉"这个描述已经很明显了 ...

  4. 树的平衡之AVL树——错过文末你会后悔,信我

    学习数据结构应该是一个循序渐进的过程: 当我们学习数组时,我们要体会数组的优点:仅仅通过下标就可以访问我们要找的元素(便于查找). 此时,我们思考:假如我要在第一个元素前插入一个新元素?采用数组需要挪 ...

  5. 招行信用卡笔试编程题 — 考察树的节点个数C++

    秋招,错过了很多笔试,正好做到了招行信用卡的笔试题,编程题以前好像遇到过类似的题目,当时没有解决,这次整理mark一下,还是比较典型的一类题目. 题目描述: 信用卡开展营销活动,持有我行信用卡客户推荐 ...

  6. 平衡二叉排序树--调整方法快速记忆方法(渣男丢妻弃子法)

    平衡二叉排序树–调整方法快速记忆方法 首先我们先了解下什么是平衡二叉排序树. 平衡二叉排序树又称AVL树.一棵平衡二叉排序树或者是空树,或者是具有下列性质的二叉排序树: ①左子树与右子树的高度之差的绝 ...

  7. 二叉排序树、AVL树、红黑树、B树、B+树、Hash树、

    二叉排序树 1.基本应用 二叉排序树也称为也叫二叉查找树,二叉搜索树, BST. 满足二叉查找树的一般性质,是指一棵空树具有如下性质: 对于二叉树中的任何一个非叶子节点,要求左子节点比当前节点值小,右 ...

  8. 平衡查找树C语言程序,树4. Root of AVL Tree-平衡查找树AVL树的实现

    对于一棵普通的二叉查找树而言,在进行多次的插入或删除后,容易让树失去平衡,导致树的深度不是O(logN),而接近O(N),这样将大大减少对树的查找效率.一种解决办法就是要有一个称为平衡的附加的结构条件 ...

  9. 《恋上数据结构第1季》平衡二叉搜索树、AVL树

    AVL树 二叉搜索树缺点分析 改进二叉搜索树 平衡(Balance) 理想平衡 如何改进二叉搜索树? 平衡二叉搜索树(Balanced Binary Search Tree) AVL树 BST 对比 ...

最新文章

  1. 计算机专业英语2008影印版第四章翻译,计算机专业英语2008影印版选择题的翻译加答案(14页)-原创力文档...
  2. matlab 数组元素连乘积prod
  3. LeetCode209 长度最小的子数组(二分法)
  4. 传2020年苹果Mac将用自制芯片
  5. Ubuntu Linux系统下的SVN客户端工具PySVN
  6. Swift之extension的使用
  7. 2021 腾讯技术十大热门文章
  8. linq to sql 多条件组合查询
  9. poj 3411 1724
  10. python将一个文件的内容写入另一个文件_Python3中如何将文件中两个关键词中的信息写入到另一文件?...
  11. Vertica系列:数仓优化
  12. mongodb 查多个不等于_MongoDB增删查
  13. java batik 字体文件_java – 当使用Batik的SVGGraphics2D时,如何设置font-family而不是font?...
  14. 最新弱口令字典,常用密码,弱密码集合
  15. Xshell6与Xftp6教育版下载(免费)
  16. 10g gtx 光纤通信测试_光纤通信系统仿真实验
  17. C# 滑块/滑杆/拖动条控件trackBar
  18. linux proftpd 用户,Linux下安装和配置proftpd教程
  19. ISP许可证办理攻略全了解
  20. 更新npm和node

热门文章

  1. 比洗牙更好 教你5分钟消灭牙垢
  2. 没有项目经验找工作处处碰壁怎么办
  3. Android连接SQLServer详细教程(数据库+服务器+客户端),并在微软Azure云上搭建云服务
  4. 【更新】本地提权工具公开|CVE-2020-0796:微软发布SMBv3协议“蠕虫级”漏洞补丁通告
  5. ORACLE 正负数分开排序 SQL
  6. A19:Unity(C#)获取当前运行exe路径的方法
  7. 徐姗玩赚中国:我用一个月时间做了一个几万粉的dy号,结果被限流了
  8. ftp服务器的搭建与使用
  9. 趣味三大彩蛋命令安装shell脚本
  10. C语言中矩阵定义问题