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

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

  ​此账号为华为云开发者社区官方运营账号,提供全面深入的云计算前景分析、丰富的技术干货、程序样例,分享华为云前沿资讯动态
  本文分享自华为云社区《【云驻共创】想了解二叉树,看这篇文章就够了》,作者: 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的满二叉树,有2^n-1个结点
  4. 完全二叉树
  叶子结点只能出现在最下层和次下层,最后一层的叶子结点在左边连续,倒数第二层的叶子结点在右边连续,我们称为完全二叉树。
  三、二叉树的创建
  接下来,我们通过代码来描述二叉树,语言以Java为例,其中结点类定义如下:
  二叉查找树类定义如下:
  相关类定义好后,我们来看具体的方法实现,下面分别介绍。1. size()方法
  size()方法相对简单,每次添加元素加一,删除元素减一,维护一个公共的变量 num 即可,代码实现如下:
  2. put(Key key,Value value)方法
  put(Key key,Value value)方法可以利用重载方法 put(Node x,Key key,Value value),因此实现也相对简单,其中第一个参数只需要传根结点即可,代码实现如下:
  3. put(Node x,Key key,Value value)方法
  put(Node x,Key key,Value value)方法应该是整个类中实现相对较为复杂的,下面进行简单的分析。
  第一种情况,当前树中没有任何一个结点,直接将新插入的结点作为根结点。
  第二种情况,当前树不为空,则从根结点开始。这种情况有可以细分为三种情况:
  1)如果新结点的key小于当前结点的key,则继续查找当前结点的左子结点。
  2)如果新结点的key大于当前结点的key,则继续查找当前结点的右子结点。
  3)如果新结点的key等于当前结点的key,则树中已经存在这样的结点,替换该结点的value值即可。
  具体的代码实现如下:
  4. get(Key key)方法
  get(Key key)方法和 put(Key key,Value value)方法类似,也可以利用重载方法 get(Node x,Key key)来实现,代码实现如下:
  5. get(Node x,Key key)方法
  get(Node x,Key key)方法实现查询方法从根结点开始,如果要查询的key小于当前结点的key,则继续找当前结点的左子结点;如果要查找的key大于当前结点的key,则继续找当前结点的右子结点;如果要查找的key等于当前结点的key,则返回当前结点的value。
  具体的代码实现如下:
  通过上面的代码,我们可以看出 get()方法和 put()方法类似,都是通过递归调用实现的。6. delete(Key key)方法
  delete(Key key)方法也是一样的思路,调用后面的重载方法就行了,代码实现如下:
  7. delete(Node x,Key key)方法
  删除方法的实现思路,以最复杂的情况为例,首先找到被删除的结点,找到被删除结点右子树中的最小结点 minNode,删除右子树中的最小结点,让被删除结点的左子树成为最小结点 minNode 的左子树,让被删除结点右子树成为最小结点minNode的右子树,让被删除结点的父结点指向最小结点 minNode。
  具体的代码实现如下:
  既然代码已经写完了,接下来通过代码来验证一下,看看我们写得是否正确:
  答案输出:
  3
  李四   2
  Nice,太好了,通过上述输出结果已经证明了程序是正确的。四、查找二叉树中最小和最大的键   比如二叉树中用来记录某个公司员工薪资和员工姓名数据,或者某班级学生们的排名和姓名数据。如何快速找出排名最高和最低的同学数据?   这样的话,该怎么做呢?其实,一般还可以整理出如下四个方法,定义如下:   1. min()方法   min()方法和上面提到的 get()和 put()方法类似,也可以使用下面的重载方法实现,具体代码如下:// 找出树中最小的键 public key min() { return min(root).key; }2. min(Node x)方法   min(Node x)方法需要根据传入的结点位置,查找左子树中的最小的结点,如果为空,则直接返回空,具体代码实现如下:// 找出树中最小键所在的结点 public Node min(Node x) { if (x == null) { return x; } Node minNode = x; while (minNode.left != null) { minNode = minNode.left; } return minNode; }3. max()方法   max()方法和上面提到的 min()方法类似,也可以使用下面的重载方法实现,具体代码如下:// 找出树中最小的键 public key max() { return max(root).key; }4. max(Node x)方法   max(Node x)方法需要根据传入的结点位置,查找右子树中的最大的结点,如果为空,则直接返回空,具体代码实现如下:// 找出树中最大键所在的结点 public Node min(Node x) { if (x == null) { return x; } Node maxNode = x; while (maxNode.right != null) { maxNode = maxNode.right; } return maxNode; }五、二叉树的遍历   二叉树的遍历有三种方式,分别是前序遍历、中序遍历、后序遍历。1. 前序遍历   先访问根结点,再访问左子树,最后访问右子树,比如下图中的二叉树,前序遍历结果如下:   EBADCGFH。2. 中序遍历   先访问左子树,再访问根结点,最后访问右子树,比如下图中的二叉树,中序遍历结果如下:   ABCDEFGH。3. 后序遍历   先访问左子树,再访问右子树,最后访问根结点,比如下图中的二叉树,后序遍历结果如下:   ACDBFHGE。   结论   二叉树的不仅在基础的数据结构方面有非常重要的研究意义,在实际应用中也有非常重要的应用场景,兼顾了常规数据结构数组和链表的优点,同时又避免了二者天生的不足。许多实际的问题抽象出来的数据结构往往是二叉树的形式,从而利用二叉树的存储结构和算法特性,因此学习二叉树就非常的必要。希望通过今天本文的介绍能够帮助大家深入理解和掌握二叉树。   点击,第一时间了解华为云新鲜技术~华为云博客_大数据博客_AI博客_云计算博客_开发者中心-华为云

中戏回应仝卓事件关于到现在中戏回应仝卓事件这个话题,相信很多小伙伴都是非常有兴趣了解的吧,因为这个话题也是近期非常火热的,那么既然现在大家都想要知道中戏回应仝卓事件,小编也是到网上收集了一些与中戏播音主持艺考(如何参加播音主持艺考)播音主持艺考(如何参加播音主持艺考)播音主持艺考考什么?内容有哪些?播音主持就业方向及前景艺考播音掌管成为本年比较抢手的一个艺考专业,除了想对其他专业更容易获得好成绩外,别的一个要苏州中考(苏州中考500分能上什么学校)苏州中考(苏州中考500分能上什么学校)进入到5月中旬,距离2021年中考还有一个多月的时间,在江苏,此前多个地区已经确定了2021年中考的时间,近日南通常州两地又陆续公布了今年的高考300分咋办(高考300分上哪学校)高考300分咋办(高考300分上哪学校)那专科的毕业生真的就没有好出路了吗,事实上也未必专科生的发展就不如本科生,有些专科院校在毕业生的就业上还是很有保障的,就比如一些隶属于国家部司法考试考什么(司法考试要考哪些科目)司法部发布2021年国家统一法律职业资格考试公告,明确客观题考试网上报名时间为6月10日至6月24日,考试时间为9月11日12日主观题考试时间为10月17日。公告明确,2021年法考研要考什么科目(考研究生要考哪些科目)哈喽22的友友们,我又来和大家唠嗑儿了,可能你每天在扮演一个无情的学习机器,那我每天就在扮演一个无情的说话机器,呸!我是充满感情的和大家唠嗑。从昨天的摸底小调查来看,既有按部就班高成人高考是什么意思(高起专报考条件)一基本概念成人高等学校招生全国统一考试(NationalUnifiedExaminationforCollegeAdmissionsforAdults),简称成人高考,是我国成人高女生自考报什么专业好(自考专升本要考哪些科目)有很多社会在职人员提升学历获得本科学历,会选择自考专升本这种形式,自考相对其他成人学历来说,考试难度偏高,取证时间较长,也对报考者的学习能力,耐力,意志力有较强的要求,如果仅以拿证考研要考哪些(本科考研究生需要考什么科目)为了让大家对考研现状及难度有一个清晰的认识,学姐就来详细介绍一下考研的内容各学科各专业的现实情况,也会以一个过来人的身份,提供一些实用建议。考研内容首先,备考之前,咱们先来了解一下研究生考试科目有哪些(考研相当于高考什么难度)2022届考研已经拉开帷幕,具体考研要考哪些科目呢。今天小编整理了详细的资料供大家参考。思想政治理论外国语大学数学等公共科目由全国统一命题,专业课主要由各招生单位自行命题(加入全国负债类科目有哪些(2021年会计科目一览表)会计科目和会计分录是会计核算的基本功,就连财务总监或者经理都不能丢下,也得时刻学习新收入准则的内容。执行新收入准则后,新增的会计科目核算内容是需要财务人员学习的。今天我带来了202
苹果手机如何拒接电话?(4种方法拒接来电,iPhone响起不再手忙脚乱)苹果手机如何拒接电话?(4种方法拒接来电,iPhone响起不再手忙脚乱)在开会过程中,突然响起了电话铃声!原来是小编Leo前几天在马云家买的充气快递到了,快递员找不到地方送!小编L潘长江出什么事儿了(死了的明星)当我打开媒体平台豁然一篇文章引入我的眼帘,文章的标题竟然打着端午节凌晨,老艺术家潘长江又离U去世了?圈内外无不愤慨!我的第一反应竟然是惋惜这位曾经带给我们无数欢乐的艺术家,第二反应莱昂纳多为什么叫小李子(莱昂纳多喜欢的中国明星)10月8日,奥斯卡影帝莱昂纳多迪卡普里奥开通微博,并于8日下午1601发布了第一条微博Hello,China!我是莱昂纳多。向中国的粉丝问好。莱昂纳多开微博莱昂纳多目前粉丝数已经突dm是什么(男生发dm是什么意思)(1)跳车答应好来玩的朋友却突然有事放了众人鸽子。(2)翻车指带头组人的玩家没组成局。(3)修仙车夜里开始玩本,一般玩到半夜甚至天亮。(4)OB直译为观察者,指不参与游戏,在旁观的插刀教事件是什么(边潇潇道歉)插刀教以李晨贾乃亮为首明星,一个比一个惨,网友因果报应都知道,娱乐圈的水深,充斥着各种诱惑,关系更是鱼龙混杂,很多你感觉他们都不认识的却是很好的朋友,更是有很多难以理解的真相。网友tired是什么意思(feels是什么意思)在国外难免会生病,用对英文句子陈述病情很重要!(1)一般病情Hefeelsheadache,nauseaandvomiting。(他觉得头痛恶心和想吐。)Heisunderthew福尔马林是什么(福尔马林俗称什么)我们每天都需要吃饭,但是这些饭究竟是不是健康的呢?你一定要擦亮自己的双眼,在菜市上买东西的时候,一定要分清楚哪些是健康的食品,哪些是不健康的食品,如果平时总是吃一些不健康的食物,甚cvt是什么意思(cvt无级变速箱好不好)教授最近收到许多同学的问题,总结一下,一个最强烈的声音就是10万元落地,到底买什么车?我相信,10万元落地的预算可能是大部分消费者在人生中的第一台车,所以它有三个最最重要的功能其一今日徐州黄金回收的价(徐州今日油价)不过要注意,油价将进入9元时代徐州很多车主们都急着赶在涨价前喂饱油箱。虽然目前来说。国家发展改革发布油价指导信息结合江苏鼓楼区xuzhougulou,有的急需用钱。相信有不少认有卖广东首现新冠病毒尼日利亚突变株每天都有不同的新闻上热搜,热搜也是大家了解当下各种热门新闻的一个途径的,这两天广东首现新冠病毒尼日利亚突变株的热度就非常高,也是受到了网友们的关注,那么小编今天自然也是到网上去收集德媒警告跟风派军舰去南海大风险每天都有不同的新闻上热搜,热搜也是大家了解当下各种热门新闻的一个途径的,这两天德媒警告跟风派军舰去南海大风险的热度就非常高,也是受到了网友们的关注,那么小编今天自然也是到网上去收集