当前位置: 首页 > news >正文

焦作住房和城乡建设局网站推荐10网站

焦作住房和城乡建设局网站,推荐10网站,广州领域设计网络运营有限公司,企业年报网上申报系统网址前言 面试过程中#xff0c;多多少少会问一点数据结构#xff08;二叉树#xff09;的问题#xff0c;今天我们来复习一下二叉树的相关问题#xff0c;文末总结。 1. 二叉树的由来 在 jdk1.8 之前#xff0c;HashMap 的数据结构由「数组链表」组成#xff0c;数组是 Ha…前言 面试过程中多多少少会问一点数据结构二叉树的问题今天我们来复习一下二叉树的相关问题文末总结。 1. 二叉树的由来 在 jdk1.8 之前HashMap 的数据结构由「数组链表」组成数组是 HashMap 的主体链表是为了解决 Hash 冲突引入的正常的数据存放是直接存在数组中但如果发生 Hash 冲突就会以链表的形式进行存储而在 jdk1.8之后当链表的长度超过 8 之后将会转换成红黑树经常存储... 相信这一段 HashMap 的描述一定是大家所熟知的其实细品之后我们可以从这段描述中发掘这些信息。 数组  链表  树。 正所谓有需求就会有发展我们来看看为什么在有「数组链表」的情况下还出来个树结构。 数组优点 简单易用随机访问性强无序数组插入速度很快效率为O1有序数组查找速度较快效率为O(logN) 数组缺点 插入和删除效率低数组大小固定无法动态扩容 链表优点 大小不固定无限扩容插入和删除速度很快 链表缺点 查询效率低不支持随机查找必须从第一个开始遍历在链表非表头的位置进行插入、删除很慢效率为O(N) 从数组到链表的优缺点我们可以看出是各有千秋不能很准确的说链表比数组就一定要高效而正是因为这种关系的存在所以二叉树出现了。 所以二叉树的由来二叉树整合了数组和链表的优缺点使得插入、删除、查找的速度都很快效率比较高。 2. 二叉树是什么 二叉树是树形结构的一个重要类型也是众多数据结构的基石。 树有很多类型每个节点最多只能有两个子节点的叫二叉树。 所以二叉树的特性就是每个节点的子结点不允许超过两个。 3. 二叉查找树 二叉查找树是一种特殊的二叉树二叉查找树的特点就是左子树节点比父节点小右子树节点值比父节点大。 极端         二叉查找树有一种极端的存在二叉树的大部分子节点都比父节点值小然后导致所有的数据偏向左侧进而退化成链表如下图所示 我们使用二叉树的目的是因为其效率高于链表查询但这种退化为链表的现象很显然就突兀怎么办呢。 所以为了解决二叉树退化成一棵链表就引入了平衡二叉树。 4. 平衡二叉树 平衡二叉树又被称为AVL树是为了解决二叉树退化成一棵链表而诞生的。 平衡二叉树特点 拥有二叉查找树的全部特性。每个节点的左子树和右子树的高度差至多等于1。 其中左右子树的高度差是通过左旋右旋实现的。 下面是一个平衡二叉树和非平衡二叉树的图 到底是如何判断高度差的呢我们可以来数节点最长连接数比如左侧节点最长连接数为「3 4 5」3个节点右侧为「9」一个节点所以高度差为2。 再比如下面一个平衡二叉树 左侧最长连接点为「3(9) 7 11」即高度为2右侧最长连接点为「14(16) 15 18 11」即高度为4所以高度差为2。 为了维持二叉树的平衡平衡二叉树是通过左旋、右旋来保证的从大的方向旋转过程又被分为单旋转和双旋转总之旋转的作用就是避免出现节点偏向一边的情况具体左旋、右旋操作在这就不详细阐述了。 但是平衡二叉树这种高度差为 1 的要求太严格了尤其是对于频繁删除、插入的场景非常浪费时间... 5. 红黑树 对于那种频繁删除、插入的场景平衡二叉树的调整过程显然是存在性能问题的所以为了解决这个问题进而又引入了红黑树。 红黑树的特点 具有二叉树所有特点。每个节点只能是红色或者是黑色。根节点只能是黑色且黑色根节点不存储数据。任何相邻的节点都不能同时为红色。红色的节点它的子节点只能是黑色。从任一节点到其每个叶子的所有路径都包含相同数目的黑色节点。 红黑树如下图所示 概括为红黑树所有的根节点都是黑色的的空节点也就是根节点不存数据任何相邻的节点都不能同时为红色红色节点是被黑色节点隔开的每个节点从该节点到达其可达的叶子节点是所有路径都包含相同数目的黑色节点。 正是因为这种特点红黑树不同于平衡树的操作红黑树不会因为插入、删除等操作追求绝对的平衡它的旋转次数少插入最多两次旋转删除最多三次旋转所以对于搜索、插入、删除操作较多的情况下红黑树的效率是优于平衡二叉树的。 但是需要注意的是如果应用场景中对插入、删除不频繁只是对查找要求较高那么平衡二叉树还是较优于红黑树。 总结 1、为什么有了数组和链表还要引入二叉树 针对数组和链表的优缺点无法说链表一定优于数组或者是数组一定优于链表因为某些长期的需要所以就推出一个相对折中的二叉树。 2、为什么有了二叉树还要引入平衡二叉树 有了二叉树还不算完二叉树有一种极端的情况就是所有的子结点偏向一端二叉树退化成链表这就相当于我选择了这种的二叉树你现在罢工不干了找了个链表来糊弄我... 所以为了解决二叉查找树退化为链表的情况引入了平衡二叉树即 平衡二叉树是为了解决二叉树退化成一棵链表而诞生的。 既然有了平衡二叉树这下总没有问题了吧 3、为什么有了平衡二叉树还要引入红黑树 但是是实际使用过程中因为平衡二叉树追求绝对严格的平衡关系显然这个规则在于频繁的插入、删除等操作的情景性能肯定会出现问题... 所以为了解决这个问题进而又引入了红黑树。 平衡二叉树追求绝对严格的平衡平衡条件必须满足左右子树高度差不超过1红黑树是放弃追求完全平衡它的旋转次数少插入最多两次旋转删除最多三次旋转所以对于搜索、插入、删除操作较多的情况下红黑树的效率是优于平衡二叉树的。 4、红黑树是终结吗 时代总是进步的大胆猜测不会是就跟当初从数组、链表到二叉树一样。 至此通过这篇希望大家对整个树结构的出现有一个基础的概念目前面试中最为常问的就是红黑树了当然这得益于 HashMap但红黑树还有挺多其他的知识点可以考察例如红黑树有哪些应用场景红黑树与哈希表在不同应该场景的选择红黑树有哪些性质红黑树各种操作(插入删除查询)的时间复杂度是多少等等等等...
http://www.pierceye.com/news/9251/

相关文章:

  • 瑞安地区建设网站中建南方建设集团官方网站
  • 网站优化知识增城建设网站
  • 怎么建设空包网站企业网站做开放api
  • 网站建设 项目背景做网站连带责任
  • 精品资源共享课网站建设 碧辉腾乐中国建设银行英语网站首页
  • 网站后缀是xyz指得是什么网站的缺点
  • 网站左侧悬浮广州网站建设公司奇亿网站建设
  • 大型网站制作平台自己有服务器如何建设微网站
  • 网站建设与网站设计wordpress本地环境404
  • 网站开发培训 从0网站的下拉列表怎么做
  • 贵州专业网站建设费用删除wordpress版权信息
  • 网站推广手段建造电商网站
  • 2017民非单位年检那个网站做织梦和wordpress哪个
  • 视频网站直播怎么做廊坊seo优化
  • 长沙正规企业网站制作平台网站推广方案途径
  • 温州市住房和城乡建设厅网站设计师网站
  • 还能用的wap网站徐州建设工程交易网江苏本源
  • 新绛网站建设网站系统制作教程
  • 潍坊做网站哪家好天津市建设教育培训中心的网站
  • 什么网站做视频最赚钱软件开发过程模型
  • 永州网站建设开发二道江网站建设
  • 外贸soho建网站贵阳免费做网站
  • 群晖系统可以做网站吗wordpress 关闭边栏
  • 传统网站 手机网站在线app
  • 网站建设意见征求表商城网站建设最新报价
  • 衡水做网站设计哪里网站建设公司比较好
  • 饰品电子商务网站的建设西安网页设计培训价格
  • 网站定制深圳郑州工程造价信息网
  • 扁平化手机网站模板三明网站建设tudouly
  • 携程网站建设展馆设计的主题有哪些