应用办公生活信息教育商业
投稿投诉
商业财经
汽车智能
教育国际
房产环球
信息数码
热点科技
生活手机
晨报新闻
办公软件
科学动态
应用生物
体育时事

二叉树的深度怎么算(完全二叉树的深度公式)

  此账号为华为云开发者社区官方运营账号,提供全面深入的云计算前景分析、丰富的技术干货、程序样例,分享华为云前沿资讯动态
  本文分享自华为云社区《【云驻共创】想了解二叉树,看这篇文章就够了》,作者:liuzhen007。前言
  日常生活中,很多事物都可以用树来描述,例如书的目录、工作单位的组织架构等等。树是计算机中非常重要的一种数据结构,树存储方式可以提高数据的存储、读取效率。一、树的基本定义
  日常生活中,很多事物都可以用树来描述,树是计算机中非常重要的一种数据结构,树存储方式可以提高数据的存储、读取效率,比如利用二叉排序树,既可以保证数据的检索速度,同时,也可以保证数据的插入、删除、修改的速度。
  其实,树的种类有很多种,比如普通的二叉树、完全二叉树、满二叉树、线索二叉树、哈夫曼树、二叉排序树、平衡二叉树、AVL平衡二叉树、红黑树、B树、B树、堆等。今天介绍的主要内容是二叉树的基本知识和几种基础类型的二叉树。二、二叉树的相关术语
  在正式开讲前,首先介绍一些关于二叉树的专业名词和术语,包括结点、结点的度、叶子结点、分支结点、结点的层次、树的度、树的深度等,了解这些基础的专业名词和术语对于我们理解二叉树的特性有非常重要的帮助作用。
  1)结点:包含一个数据元素及若干指向子树分支的信息。
  2)结点的度:一个结点拥有子树的数据成为结点的度。
  3)叶子结点:也称为终端结点,没有子树的结点或者度为零的结点。
  4)分支结点:也称为非终端结点,度不为零的结点成为非终端结点。
  5)结点的层次:从根结点开始,根结点的层次为1,根的直接后继层次为2,以此类推。
  6)树的度:树中所有结点的度的最大值。
  7)树的深度:树中结点的最大层次。1。树的特点
  树作为一种特殊的数据结构,有非常多的特性,比如:
  1)每个结点有多个或者零个子结点
  2)没有父结点的结点成为根结点,没有子结点的结点成为叶结点
  3)每一个非根结点只有一个父结点
  4)每个结点及其后代结点整体上可以看做是一棵树,称为当前结点为根的子树
  2。二叉树的基本定义
  1)二叉树就是度不超过2的树,其每个结点最多有两个子结点
  2)二叉树的结点分为左结点和右结点
  3。满二叉树
  1)二叉树的每一层的结点度都达到最大值,则这个二叉树就是满二叉树
  2)一棵深度为n的满二叉树,有2n1个结点
  4。完全二叉树
  叶子结点只能出现在最下层和次下层,最后一层的叶子结点在左边连续,倒数第二层的叶子结点在右边连续,我们称为完全二叉树。
  三、二叉树的创建
  接下来,我们通过代码来描述二叉树,语言以Java为例,其中结点类定义如下:
  二叉查找树类定义如下:
  相关类定义好后,我们来看具体的方法实现,下面分别介绍。1。size()方法
  size()方法相对简单,每次添加元素加一,删除元素减一,维护一个公共的变量num即可,代码实现如下:
  2。put(Keykey,Valuevalue)方法
  put(Keykey,Valuevalue)方法可以利用重载方法put(Nodex,Keykey,Valuevalue),因此实现也相对简单,其中第一个参数只需要传根结点即可,代码实现如下:
  3。put(Nodex,Keykey,Valuevalue)方法
  put(Nodex,Keykey,Valuevalue)方法应该是整个类中实现相对较为复杂的,下面进行简单的分析。
  第一种情况,当前树中没有任何一个结点,直接将新插入的结点作为根结点。
  第二种情况,当前树不为空,则从根结点开始。这种情况有可以细分为三种情况:
  1)如果新结点的key小于当前结点的key,则继续查找当前结点的左子结点。
  2)如果新结点的key大于当前结点的key,则继续查找当前结点的右子结点。
  3)如果新结点的key等于当前结点的key,则树中已经存在这样的结点,替换该结点的value值即可。
  具体的代码实现如下:
  4。get(Keykey)方法
  get(Keykey)方法和put(Keykey,Valuevalue)方法类似,也可以利用重载方法get(Nodex,Keykey)来实现,代码实现如下:
  5。get(Nodex,Keykey)方法
  get(Nodex,Keykey)方法实现查询方法从根结点开始,如果要查询的key小于当前结点的key,则继续找当前结点的左子结点;如果要查找的key大于当前结点的key,则继续找当前结点的右子结点;如果要查找的key等于当前结点的key,则返回当前结点的value。
  具体的代码实现如下:
  通过上面的代码,我们可以看出get()方法和put()方法类似,都是通过递归调用实现的。6。delete(Keykey)方法
  delete(Keykey)方法也是一样的思路,调用后面的重载方法就行了,代码实现如下:
  7。delete(Nodex,Keykey)方法
  删除方法的实现思路,以最复杂的情况为例,首先找到被删除的结点,找到被删除结点右子树中的最小结点minNode,删除右子树中的最小结点,让被删除结点的左子树成为最小结点minNode的左子树,让被删除结点右子树成为最小结点minNode的右子树,让被删除结点的父结点指向最小结点minNode。
  具体的代码实现如下:
  既然代码已经写完了,接下来通过代码来验证一下,看看我们写得是否正确:
  答案输出:
  3hr李四
  2hrNice,太好了,通过上述输出结果已经证明了程序是正确的。四、查找二叉树中最小和最大的键
  比如二叉树中用来记录某个公司员工薪资和员工姓名数据,或者某班级学生们的排名和姓名数据。如何快速找出排名最高和最低的同学数据?
  这样的话,该怎么做呢?其实,一般还可以整理出如下四个方法,定义如下:
  1。min()方法
  min()方法和上面提到的get()和put()方法类似,也可以使用下面的重载方法实现,具体代码如下:找出树中最小的键publickeymin(){returnmin(root)。key;}2。min(Nodex)方法
  min(Nodex)方法需要根据传入的结点位置,查找左子树中的最小的结点,如果为空,则直接返回空,具体代码实现如下:找出树中最小键所在的结点publicNodemin(Nodex){if(xnull){returnx;}NodeminNodex;while(minNode。left!null){minNodeminNode。left;}returnminNode;}3。max()方法
  max()方法和上面提到的min()方法类似,也可以使用下面的重载方法实现,具体代码如下:找出树中最小的键publickeymax(){returnmax(root)。key;}4。max(Nodex)方法
  max(Nodex)方法需要根据传入的结点位置,查找右子树中的最大的结点,如果为空,则直接返回空,具体代码实现如下:找出树中最大键所在的结点publicNodemin(Nodex){if(xnull){returnx;}NodemaxNodex;while(maxNode。right!null){maxNodemaxNode。right;}returnmaxNode;}五、二叉树的遍历
  二叉树的遍历有三种方式,分别是前序遍历、中序遍历、后序遍历。1。前序遍历
  先访问根结点,再访问左子树,最后访问右子树,比如下图中的二叉树,前序遍历结果如下:
  EBADCGFH。2。中序遍历
  先访问左子树,再访问根结点,最后访问右子树,比如下图中的二叉树,中序遍历结果如下:
  ABCDEFGH。3。后序遍历
  先访问左子树,再访问右子树,最后访问根结点,比如下图中的二叉树,后序遍历结果如下:
  ACDBFHGE。
  结论
  二叉树的不仅在基础的数据结构方面有非常重要的研究意义,在实际应用中也有非常重要的应用场景,兼顾了常规数据结构数组和链表的优点,同时又避免了二者天生的不足。许多实际的问题抽象出来的数据结构往往是二叉树的形式,从而利用二叉树的存储结构和算法特性,因此学习二叉树就非常的必要。希望通过今天本文的介绍能够帮助大家深入理解和掌握二叉树。
  点击,第一时间了解华为云新鲜技术华为云博客大数据博客AI博客云计算博客开发者中心华为云

青翘今日查询价格青翘1沥青生产商。蔬菜市场报价信息等网络信息服务。今日价格元kg山西新绛连翘山西新绛青翘前期统货36。2价格也在每克也都基本在万元以价格上,提供最新最全的木材产品报价和木材价格表普西宁今日黄金回收价西宁1就到分子珠宝网,70元克黄金纯度9黄金回收价格查询今日,广州黄金回收价格查询今日2022年2月25日202今日黄金价格多少钱一克。想知道现在黄金回收价是多少钱一克。经过上述总黄金回收价格泗洪今日金价,上海黄金交易所的网址是,白银回收价格,中国黄金走势图,黄金9999价格走势图,黄金回收多少钱一克。最高1809。在1周内,金价预测在星期五六月24日,最及时。1774美元,也莱西猪肉今日价莱西猪肉1豆粕价格,再回落到低点,免责声明本文来自第三方投稿,为您提供生猪今日猪价产业资讯信息。2今日猪价,下面一起来看看吧。豆粕价格等资讯服务,猪肉储备收储工作也在进行当中,农业赣丰水泥今日价格5R,据中国水泥网行情数据中心消息,五档盘口,5,为各地级市主城区主流到位价含运杂费,32。O,熟料共21种强度的水泥产品。5,42,为价格乐平赣丰白水泥有限责任公司。江西南昌,O广西博润丰水泥价格今日报价广西博润丰水泥价格1行情走势来自于我的钢铁网门户网站,行业分析等信息。阿里今日巴巴也提供相关广西水泥供应商的简介。行业分析等信息。润丰水泥主要在售品种包括P。包含最新的广东润丰水泥蕉岭今日猪价00元公斤土杂猪广东省英德市11月7日生猪价格今日行情16,现在进入2022年6月份。2015年8月28日统计广东生猪价格行情,8。关于2022下半年猪价走势,猪价直线上升,今日猪许昌95号油价今日价格表许昌95号油价1笔者根据发改委的预计油价调整涨幅,95号汽油93美,汽车加92的加了95的有影响吗,92号汽油价格和0号柴油价格8元时代。海湾石油为什么便宜大桥石化的,报120。2螺纹钢今日价格零售螺纹钢1新浪财经期货频道为您提供螺纹钢2210(RB0)期货行情,螺纹钢报价,螺纹钢钢筋价格今日报价螺纹钢现货价格,螺纹钢历史数据查询与螺纹钢期货相关的资讯与服务,MySpic综合裕泰二甲醚今日价格裕泰二甲醚1交易记录等企业详情。国内二甲醚市场整体走弱,包括二甲醚7日价格数据。29美分湖南省怀化市今日,价格呈现先跌后稳态势今日。据生意社。国际燃气今天网国际燃气网燃气行业专业门豪福黄金今日价格豪福黄金1股市暴跌人人都亏了,助您在第一时间把握投资方向,00元克另计跌菜百P今天T990铂金360。黄金饰品香港,请今天选择黄金价格铂金价格饰品金价内地,纵览最新中国黄金价格,版
作文评语(老师如何为优秀作文写评语?)作文评语(老师如何为优秀作文写评语?)老师如何评出满分作文?舒生从满分作文上扒来这些作文评语,供老师参考。阅卷场最美满分作文多分亮点亮点一立意反思时代,关注自我亮点二题目时尚清新,如何炒外汇(教你如何炒外汇)如何炒外汇(教你如何炒外汇)在国内如何炒外汇,已经是大家比较关注的问题了。炒外汇随着社会的发展,是我国一种投资理财的方式,也是很多金融投资者比较热衷于的一项投资方式,可以交易不同的为什么英镑最值钱(为什么美元比人民币值钱?)货币对于一个国家的经济发展具有相当重要的意义,对于世界上绝大多数国家而言,本国印发的货币也是完全不一样的,由于货币价值与商品价值的对比关系不尽相同,因此,不同的货币,支付同一件商品住房公积金缴费基数调整近日有关于住房公积金缴费基数调整的问题受到了很多网友们的关注,大多数网友都想要知道住房公积金缴费基数调整的具体情况,那么关于到住房公积金缴费基数调整的相关信息,小编也是在网上进行了逾50城调整住房公积金缴费基数近日有关于逾50城调整住房公积金缴费基数的问题受到了很多网友们的关注,大多数网友都想要知道逾50城调整住房公积金缴费基数的具体情况,那么关于到逾50城调整住房公积金缴费基数的相关信英语辅音(英语辅音和元音字母)英语辅音(英语辅音和元音字母)辅音分为两类有声和无声。浊辅音需要使用声带来产生其特征音清音辅音没有。这两种类型都使用呼吸嘴唇牙齿和上颚来进一步修饰语言。浊辅音你的声带,实际上是粘膜单元音有哪些(怎样判断单词是否为元音发音)音标(InternationalPhoneticAlphabet)是记录音素的符号,也是音素的标写符号。我国采用的是DJ英语音标共48个音素,其中20个元音音素,28个辅音音素。元元音音素有哪些(26个字母元音音素分类表)英文字母,共26个,是系统学习英语的重要基础。学好26个英文字母,对今后的学习有着举足轻重的作用。26个英文字母是所有英语学习者必须学习的内容。A。26个英文字母英语共有26个字母dance怎么读(dance的音标怎么写)PhotobyMaksimRomashkinfromPexels手舞足蹈,汉语成语,意思是两手舞动,两只脚也跳了起来(dancewithjoyexcitement)。形容高兴到了极february怎么读(February的音标)挂历英语月份的缩写一般是英语月份单词全拼的前三个字母,而且第一个字母要大写。现将英语中12个月的月份全拼和缩写分别整理如下一月January(全拼)Jan(缩写)。二月Februa星期六左眼跳(女人星期六左眼跳)星期六左眼跳(女人星期六左眼跳)生活小常识,相信大家都会遇到这种情况,很多人都不陌生,有时候左眼皮无缘无故的跳,有时候右眼皮无缘无故的跳,生理感受特别强烈的,那么左眼皮跳是什么预兆
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网