二叉排序树和二叉查找树_二叉排序树查找的优缺点

二叉排序树和二叉查找树_二叉排序树查找的优缺点数据结构与算法之 —— 二叉树和二叉搜索树二叉树01. 什么是二叉树定义:每个节点都最多只能有两个子节点的树结构特点: 通常子树被称作“左子树”(left subtree)和“右子树”(right subtree) 任何一个树都可以转成二叉树02. 完全二叉

数据结构与算法之 —— 二叉树和二叉搜索树
  二叉树

  01. 什么是二叉树

  定义:每个节点都最多只能有两个子节点的树结构

  特点: 通常子树被称作“左子树”(left subtree)和“右子树”(right subtree) 任何一个树都可以转成二叉树二叉排序树和二叉查找树_二叉排序树查找的优缺点二叉排序树和二叉查找树_二叉排序树查找的优缺点

  02. 完全二叉树

  定义:一棵二叉树的深度为k,除第 k 层外,其它各层 (1~k-1) 的结点数都达到最大个数,第k层所有的结点都连续集中在最左边。

  特点: 深度为k的完全二叉树,至少有2^(k-1)个节点,至多有2^k-1个节点 二叉排序树和二叉查找树_二叉排序树查找的优缺点二叉排序树和二叉查找树_二叉排序树查找的优缺点

  03. 满二叉树

  定义:一棵二叉树深度为k,则第k层有2^(k-1)个节点的树是满二叉树。

  特点: 所有内部节点都有两个子节点,叶子节点全都在最底层; 第k层的结点数是:2^(k-1); 总结点数是:2^k-1,总结点数一定是奇数 二叉排序树和二叉查找树_二叉排序树查找的优缺点二叉排序树和二叉查找树_二叉排序树查找的优缺点

  04. 为什么定义这样特殊的二叉树?

  因为一颗完全二叉树是可以用数组来存储的,不会浪费内存空间。

  如下数组,根节点 A 的下标是 0,那么它的左孩子就是 (2 * 0 + 1),右孩子就是 (2 * 0 + 2)。以此类推,0 替换为变量 i 后,就可以推导每个节点的左右孩子,而不需要特别定义节点类,使用两个左右指针去指向左右孩子,这也是一种更高效的存储方案。此处可以延伸到二叉堆,它无论何时都是一颗符合堆的性质的完全二叉树,所以它的最优存储方案就是用数组

  05. 二叉树的遍历方式

  二叉树有先序遍历(根左右)、中序遍历(左根右)、后序遍历(左右根)、层序遍历四种方式。

  i. 先序遍历(根左右) 二叉排序树和二叉查找树_二叉排序树查找的优缺点二叉排序树和二叉查找树_二叉排序树查找的优缺点

  遍历规则: 先访问根结点 然后先序遍历左子树 然后先序遍历右子树

  实现:

  遍历结果:ABDHIECFJG

  ii. 中序遍历(左根右) 二叉排序树和二叉查找树_二叉排序树查找的优缺点二叉排序树和二叉查找树_二叉排序树查找的优缺点

  遍历规则: 先中序遍历左子树 访问根结点 然后中序遍历右子树

  实现:

  遍历结果:HDIBEAFJCG

  iii. 后序遍历(左右根) 二叉排序树和二叉查找树_二叉排序树查找的优缺点二叉排序树和二叉查找树_二叉排序树查找的优缺点

  遍历规则: 先后序遍历左子树 然后后序遍历右子树 然后访问根结点

  实现:

  遍历结果:HDIBEACFJG

  iv. 层序遍历 二叉排序树和二叉查找树_二叉排序树查找的优缺点二叉排序树和二叉查找树_二叉排序树查找的优缺点

  遍历规则:从上到下,从左到右遍历。

  实现:

  遍历结果:ABCDEFGHIJ

  二叉搜索树(BST)

  01. 基本概念

  二叉搜索树BST(Binary Search/ Sort Tree),也称为二叉查找树,二叉排序树,顾名思义是二叉树的特种树,专注于检索,特点是让节点按照数据的一定的规律摆放,从而让搜索某个节点特别的高效

  特点: 左子树上所有结点的值均小于等于它的根结点的值 右子树上所有结点的值均大于等于它的根结点的值二叉排序树和二叉查找树_二叉排序树查找的优缺点二叉排序树和二叉查找树_二叉排序树查找的优缺点

  02. 代码实现

  1、定义

  首先定义两个类,一个节点类,一个树类:

  2、新增

  新增节点时,需要保证无论增加多少个节点,都不被破坏二叉搜索树的定义(即左小右大)。

  步骤: 新节点与根节点进行比较 若新节点 < 根节点,将根节点指向根节点的左孩子,返回第一步 若新节点 > 根节点,将根节点指向根节点的右孩子,返回第一步 若根节点不存在,此处即为新节点的位置二叉排序树和二叉查找树_二叉排序树查找的优缺点二叉排序树和二叉查找树_二叉排序树查找的优缺点

  3、查询

  步骤: 新节点与根节点进行比较 若新节点 < 根节点,将根节点指向根节点的左孩子,返回第一步 若新节点 > 根节点,将根节点指向根节点的右孩子,返回第一步 若新节点 === 根结点,找到啦! 若根节点不存在,说明树中不存在要查询的节点二叉排序树和二叉查找树_二叉排序树查找的优缺点二叉排序树和二叉查找树_二叉排序树查找的优缺点

  4、删除 叶子节点:直接删除 只有一边有孩子节点:让孩子节点接替被删除节点的位置 两边都有孩子节点: 在待删除节点的左子树里面找到最大的值替代 在待删除节点的右子树里面找到最小的值替代 二叉排序树和二叉查找树_二叉排序树查找的优缺点二叉排序树和二叉查找树_二叉排序树查找的优缺点

  03. 优缺点

  优点:增删查速度快,平均时间复杂度均为O(logn)

  缺点:可能出现类似线性链表的结构,查找的时间复杂度会变成O(n)

  二叉排序树和二叉查找树_二叉排序树查找的优缺点二叉排序树和二叉查找树_二叉排序树查找的优缺点

  平衡二叉树(AVL)

  01. 基本概念

  平衡二叉树(AVL)全称平衡二叉搜索树,是一种可以自平衡的树,是从上面二叉搜索树升级过来的。

  以二叉搜索树为基础,增加平衡的规定:左子树和右子树的高度差不得超过1,并且左右两个子树都是一棵平衡二叉树。

  02. 如何实现平衡?

  通过左旋或右旋两种方法。 二叉排序树和二叉查找树_二叉排序树查找的优缺点二叉排序树和二叉查找树_二叉排序树查找的优缺点二叉排序树和二叉查找树_二叉排序树查找的优缺点二叉排序树和二叉查找树_二叉排序树查找的优缺点

  03. 优缺点

  优点:解决了二叉查找树退化为近似链表的缺点,最坏的查找时间复杂度也为 O(logn)。

  缺点:因为平衡树要求每个节点的左子树和右子树的高度差至多等于1,这个要求实在是太严了,导致每次进行插入/删除节点的时候,很容易会破坏平衡树的平衡的规则,进而我们需要频繁地通过左旋和右旋来进行调整,使之再次成为一颗符合要求的平衡树。显然,如果在那种插入、删除很频繁的场景中,平衡树需要频繁进行调整,这会使平衡树的性能大打折扣。

激活谷谷主为您准备了激活教程,为节约您的时间请移步至置顶文章:https://sigusoft.com/99576.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/97213.html

(0)
上一篇 2024年 5月 21日 上午10:21
下一篇 2024年 5月 21日 上午10:36

相关推荐

  • 二叉搜索树和二叉判定树一样吗_二叉搜索树和二叉判定树一样吗对吗

    二叉搜索树和二叉判定树一样吗_二叉搜索树和二叉判定树一样吗对吗《数据结构》复习11 B树一、B 树简介1.1 回顾:二叉排序树 (BST)1.2 5叉查找树1、图示2、代码1.3 保证查找效率1、原因若每个结点内关键字太少,导致树变高,要查更多层结点,效率低2、策略(1) m 叉查找树中,规

    2024年 5月 28日
  • arm架构和芯片的关系_arm架构和芯片的关系是什么

    arm架构和芯片的关系_arm架构和芯片的关系是什么一文读懂ARM技术架构ARM的设计是全球大多数移动设备处理器的基础。各大手机芯片,包括高通骁龙、Apple A系列、华为麒麟芯片、三星Exynos,等它们的底层均是ARM的技术。1991 年ARM 公司成立于英国剑桥,在成立

    2024年 5月 24日
  • redis缓存击穿 缓存雪崩_redis雪崩和穿透、击穿的解决方法

    redis缓存击穿 缓存雪崩_redis雪崩和穿透、击穿的解决方法图解缓存击穿、缓存穿透、缓存雪崩的区别在实际开发中会面临的缓存异常可能会出现三个问题,分别是缓存雪崩、缓存击穿和缓存穿透。这三个问题会导致大量请求从缓存转移到数据库,如果请求的并发量很大的话,就会导致数据库崩溃。那么,我们应该

    2024年 5月 12日
  • bandizip怎么批量解压_breezip怎么解压多个文件

    bandizip怎么批量解压_breezip怎么解压多个文件2022主流压缩软件测评压缩软件哪个好?现在压缩软件也是五花八门很多种,打开你的电脑看看,你用的是哪个压缩软件。很多朋友都会用到国产的一些压缩软件,但这其实可能并非是明智之选。备受大家喜欢的有Bandizi

    2024年 5月 8日
  • spider软件安全吗_spider 软件

    spider软件安全吗_spider 软件新的恶意软件“Spider”,给受害者96小时的付款期限原标题:新的恶意软件“Spider”,给受害者96小时的付款期限安全研究人员发现新的勒索软件,该软件将会加密受害者的软件,并给受害者96小时的最后支付期限。Netskope威胁研究实验室的专家们于12月10日发现了这个具有“中等规模”的勒索

    激活谷笔记 2024年 5月 29日
  • html做表单_html做表单代码

    html做表单_html做表单代码HTML/CSS题库一、 填空题1.使用文本编辑器编辑完HTML后,扩展名可以是__html___或___htm__。2.表格的标签是____table______,单元格的标签是____td______。3.在编辑table表格时,合并行使用 __rowspan_

    激活谷笔记 2024年 5月 31日
  • 同步检测与测评六年级上册答案语文

    同步检测与测评六年级上册答案语文以下是小编为大家分享的统编版小学语文六年级上册天天向上同步测试卷(有答案),有单元+月考+期中+专项+期末测试,建议各位家长领取打印给孩子测试!试卷均包含参考答案哦~领取电子版试卷请拉到文末温馨提示关注小编+私信备注语文六年级上册天天向上同步测试卷

    激活谷笔记 2024年 5月 18日
  • vc 进度条

    vc 进度条原标题:车企产销进度条到哪了广州车展开幕了,将年底汽车销售推向今年的最后一个小高峰。现在离2020年结束只剩下不到50天的时间,正是各家企业冲击全年销量目标的关键时刻。根据中国汽车工业协会(以下简称“中汽协”)的最新统计数据,10月汽车销量为257.3万辆,同比增长12.5%,至此我国汽车销量已连

    激活谷笔记 2024年 5月 19日
  • matlab加速度计计算位移_matlab加速度求位移和速度

    matlab加速度计计算位移_matlab加速度求位移和速度matlab加速度积分求位移### 回答1:加速度积分求位移是在[信号](https://geek.csdn.net/educolumn/05057486f43155154a04d7d84a955d04?spm=1055.2569.3001.10083)处

    激活谷笔记 2024年 5月 21日
  • 冯诺依曼计算机的基本工作原理是_冯诺依曼计算机的基本工作原理是什么

    冯诺依曼计算机的基本工作原理是_冯诺依曼计算机的基本工作原理是什么冯诺依曼计算机的基本原理是什么冯诺依曼计算机的基本原理是存储程序原理,是把程序和数据存储到计算机内部存储器中的一种设计原理;存储程序工作方式规定,程序执行前,需将程序包含的指令和数据先送入内部存储器,一旦启动程序执行,则计算机必须能够在不需要操作人员干预下自动完成逐条指令取出和执行的任务

    2024年 5月 27日
  • 面向对象和面向过程的区别以及优缺点分析

    面向对象和面向过程的区别以及优缺点分析面向对象和面向过程是两种不同的编程范式,它们的主要区别在于:面向对象是基于对象的概念,把现实世界中的事物看作对象,将其属性和行为封装在一起,通过对象之间的交互来完成任务。而面向过程则是基于任务的概念,将任务分解为一个个步骤,然后按照一定的顺序执行这些步骤。面

    激活谷笔记 2024年 5月 17日
  • 对比人脸相似度的软件_对比人脸相似度的软件有哪些

    对比人脸相似度的软件_对比人脸相似度的软件有哪些人脸对比相似度软件人脸对比验证系统是一款可以对比人物照片相似度的软件,人脸对比验证系统主要包含人脸对比及身份认证两项功能,在远程视频时通过此软件可以分辨判断身份证照片是否为本人。相关软件软件大小版本说明下载地址闪电苹果HEIC

    激活谷笔记 2024年 5月 27日
关注微信