二叉搜索树的深度与搜索效率
二叉搜索树也可称为二叉查找树,它的常用方法可以参考:二叉查找树
我们在树, 二叉树, 二叉搜索树中提到,一个有n个节点的二叉树,它的最小深度为log(n),最大深度为n。比如下面两个二叉树:
深度为n的二叉树
深度为log(n)的二叉树
这两个二叉树同时也是二叉搜索树(参考树, 二叉树, 二叉搜索树)。注意,log以2为基底。log(n)是指深度的量级。根据我们对深度的定义,精确的最小深度为floor(log(n)+1)。
我们将处于同一深度的节点归为一层。如果除最后一层外的其他层都被节点填满时,二叉树有最小深度log(n)。
二叉搜索树的深度越小,那么搜索所需要的运算时间越小。一个深度为log(n)的二叉搜索树,搜索算法的时间复杂度也是log(n)。然而,我们在二叉搜索树中已经实现的插入和删除操作并不能让保持log(n)的深度。如果我们按照8,7,6,5,4,3,2,1的顺序插入节点,那么就是一个深度为n的二叉树。那么,搜索算法的时间复杂度为n。
n和log(n)的时间复杂度意味着什么呢?时间复杂度代表了完成算法所需要的运算次数。时间复杂度越小,算法的速度越快。
可以看到,随着元素的增加,log(n)的时间复杂度的增长要远小于n。所以,我们自然希望二叉搜索树能尽可能保持log(n)的深度。在上面深度为n的例子中,我们发现,每个节点只有左节点被填满。树的每一层都有很多空位。能不能尽可能减少每一层的空位呢? (相应的,减少树的深度)
“紧致”的树
一种想法是先填满一层,再去填充下一层,这样就是一个完全二叉树(complete binary tree)。这样的二叉树实现插入算法会比较复杂。我们将介绍一种思路相似,但比较容易实现的树状数据结构——AVL树。

转载于:https://www.cnblogs.com/anzhi/p/7447734.html

二叉搜索树的深度与搜索效率图解相关推荐

  1. 详解 二叉搜索树-----AVL树

    二叉搜索树 根结点比左子树中所有结点都大 根结点比右子树所有结点都小 最小的元素在最左侧 最大的元素在最右侧 中序遍历有序 具有以上的特征的二叉树就是二叉搜索树也叫二叉排序数 二叉搜索树的操作 查找 ...

  2. C++ 第八节数据结构 第七节 ——二叉搜索树 AVL树 红黑树(底层原理图+模拟实现)

    第一次,C++和数据结构联合推出,倾情献上呦~~ 给个关注吧 23333~~~~~~(现在每天系统就给我一个机器人的粉丝量了55555~~~~~) 本节内容,我们将着重来探讨 二叉树 中特殊的两种树- ...

  3. C++小工修炼手册XXVII (二叉搜索树的简单实现以及原理解释)

    二叉搜索树的介绍: 二叉搜索树又称二叉排序树,它或者是一棵空树,或者是具有以下性质的二叉树: 若它的左子树不为空,则左子树上所有节点的值都小于根节点的值 若它的右子树不为空,则右子树上所有节点的值都大 ...

  4. 二叉搜索树详解--实现插入和删除

    目录 BST树概念 BST树操作 BST树的查找 BST树的插入 BST树的删除 实现一个自己的BST树 BSTNode类和BSTree类 查找操作; 插入操作: 删除操作: 应用: 二叉搜索树性能分 ...

  5. 二叉树进阶--二叉搜索树

    目录 1.二叉搜索树 1.1 二叉搜索树概念 1.2 二叉搜索树操作 1.3 二叉搜索树的实现 1.4 二叉搜索树的应用 1.5 二叉搜索树的性能分析 2.二叉树进阶经典题: 1.二叉搜索树 1.1 ...

  6. 【C++】二叉搜索树解析

    二叉搜索树 概念 二叉搜索树的概念(特征) 二叉搜索树的性能分析 操作 查找 插入 删除 模拟实现 搜索二叉树类的构建 查找操作实现 插入操作实现 删除操作实现 递归版本 二叉搜索树的应用 K模型 K ...

  7. 详解二叉搜索树的增删改查

    文章目录 二叉搜索树 1.1 定义 二.二叉搜索树基本结构 三.二叉搜索树的具体实现 3.1 插入节点 3.2 查询节点 3.3 删除节点(⭐️) 3.4 二叉搜索树的遍历 四.二叉搜索树的性能分析和 ...

  8. 二叉搜索树(BST)分析及实现

    文章目录 概念 查找 插入 删除 二叉搜索树的性能 完整代码 二叉搜索树是AVL树和红黑树的基础, 学好二叉搜索树,有助于更好的理解map和set的特性. 概念 二叉搜索树又称二叉排序树,它或者是一棵 ...

  9. 【C++】二叉树进阶(二叉搜索树)

    文章目录 前言 1.二叉搜索树 1-1. 二叉搜索树概念 2.二叉搜索树操作 2-1.树和节点的基本框架 2-2.二叉搜索树的查找 2-3.中序遍历 2-4.二叉搜索树的插入 2-5.二叉搜索树的删除 ...

最新文章

  1. 2021年春季学期-信号与系统-第六次作业参考答案-第十小题
  2. 导入特征怎么实体化_幼儿教师开展集体活动开场导入方法 看过的都说很实用!...
  3. 网络爬虫中进行数据抓取
  4. ubuntu shell实现99乘法表
  5. numba.jit警告:warnings.warn(errors.NumbaDeprecationWarning(msg, state.func_ir.loc))
  6. Visual Studio C/C++ 相对路径和绝对路径
  7. 51nod1667-概率好题【容斥,组合数学】
  8. 机器学习实践三---神经网络学习
  9. linux 内核级资源查看,Linux资源管理
  10. matlab用高斯消元法解线性方程组,用matlab利用高斯消元法求解线性方程组
  11. [转载] python执行shell命令的几种方法
  12. barmanager 不显示_这个双十一,摄影师的显示器该换了
  13. 我被房东的由器了 怎么办呀 高手们请帮帮
  14. win10下Redis安装教程(新手)
  15. Redis RU330课程 Redis Security 第3周学习笔记
  16. python dateutil_python时间处理模块dateutil
  17. 闭着眼学基础python 保姆教程:组合数据类型(1)序列类型
  18. 51Talk-Level 7 Unit 1 L3
  19. 金牛座TGAM脑电波传感器模块
  20. 【亲测好用】磁盘管理器:Disk Xray Mac版

热门文章

  1. Office365下部署SharePoint站点集
  2. 网络安全之***手法计中计
  3. Recompile/upgrade nginx binary with no down-time
  4. WCF分布式开发步步为赢(14):WCF安全编程--基本概念
  5. 网络安全公司的源代码遭泄露,售价25万美元
  6. 5G 协议新漏洞可追踪位置信息
  7. Apache Shiro权限绕过漏洞 (CVE-2020-11989) 挖掘分析和复现
  8. Mozilla 修复已遭利用的两个火狐浏览器 0day
  9. AngularJS中ng-options简单用法及预选项失败的原因
  10. spider-抓取网页内容(Beautiful soup)