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

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

  ​此账号为华为云开发者社区官方运营账号,提供全面深入的云计算前景分析、丰富的技术干货、程序样例,分享华为云前沿资讯动态
  本文分享自华为云社区《【云驻共创】想了解二叉树,看这篇文章就够了》,作者: 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博客_云计算博客_开发者中心-华为云

拆散降头成功的表现有拆婚成功的吗一般拆婚法事多久见效承接道家灵符泰国法事微信jts234888情降法事招财降拆散情侣降补财库诅咒降整治恶人降情降蛊诅咒术诅咒小人术诅咒冤家蛊报复仇人蛊治人蛊jts234888和合降回心转意降爱情降斩桃蛊毒符泰国强制拆婚降头泰国拆散法事原理最简单的降头术拆散降头成功的表现泰国黑法情降师傅微信jts234888降头术蛊毒符灵婴超度咒巫毒旺旺护身符巫术毒娃娃拆散法事拆散符拆散术jts234888拆婚符拆散降拆散法事拆婚法事回心转意法事爱情降头术等诸五鬼拆散符,拆散术,拆婚符,拆散降,拆散法事,拆婚法事泰国黑法情降师傅微信jts234888降头术蛊毒符灵婴超度咒巫毒旺旺护身符巫术毒娃娃拆散法事拆散符拆散术jts234888拆婚符拆散降拆散法事拆婚法事回心转意法事爱情降头术等诸五鬼做拆婚法事成功几率是多少?拆散婚姻法事起效的预兆吗?承接泰国法事gzaa123123微信拆婚降,离婚降,诅咒小人降,惩罚小三降头术,招财降,五鬼财运降,平安化解小人法事,和合法事,墓地情降,情蛊降,血降惩罚恶人gzaa123123微小三做拆婚降拆散婚姻的狠招一般拆婚法事多久见效拆婚降头的成功率泰国法事黑法降头术gzaa123123微信拆婚降,离婚降,诅咒小人降,惩罚小三降头术,招财降,五鬼财运降,平安化解小人法事,和合法事,墓地情降,情蛊降,血降惩罚恶人gzaa1231泰国强制拆散法事泰国拆散法事强制复合法事强制拆散的法事拆散法事泰国黑法情降师傅微信1640078839降头术蛊毒符灵婴超度咒巫毒旺旺护身符巫术毒娃娃拆散法事拆散符拆散术微信1640078839拆婚符拆散降拆散法事拆婚法事回心转意法事爱情降头术毕业答辩什么人会不过(毕业设计有不通过的吗)各大学的博士论文答辩正在如火如荼地进行,我相信有些学生已经通过了交锋,为通过答辩而高兴。但兴致勃勃地回首自己的答辩,可以说是谦虚二字,既然学员们在回答毕业答辩时能做到谦虚?最初是毕戊戌变法为什么会失败(为什么日本明治维新成功了)欧洲在15世纪开辟了新航路,全世界都被殖民主义所笼罩,在亚洲,菲律宾先成为了西班牙的殖民地,后来变成了美国殖民地,马来西亚新加坡印度尼西亚都先后沦为英国和荷兰殖民地当时的日本很慌,南水北调为什么会失败(现在南水北调成功了吗)在美国有传言说中国的水已经用完了,至少已经几十年之久了!虽然这是美国人的自我满足,但不可否认的是我国的人均水资源确实很少,仅为世界人均占水量的四分之一。也就是说相当于美国的五分之一新手创业失败的4大原因(创业为什么会失败)和你分享四段话,祝你早日成功上岸。很多人都会看一些大佬讲话的视频,或者说看他们写的一些书籍,我发现一个问题。就是他们在写这些书和接受别人采访的时候,他们已经成功了。所以他们在写书的古代易容术(古代神秘的易容术原来是这样的!)古代易容术(古代神秘的易容术原来是这样的!)惊现神技能,易容原来是这样的。说到易容术,对很多人来说既是熟悉的又是陌生的,易者改变,容者容貌,所谓易容术便是改变人容貌的技术(艺术)。
我最爱的女人(我最爱的女人歌词)我最爱的女人(我最爱的女人歌词)有谁知道迪士尼一天下来的多少钱,三万够嘛加上免排队啥的,因为我也不懂,也没去过,打算今年暑假去的,有谁能解答一下吗机智神评2这是什么情况?借钱都这么女人最放不下的四种男人(女人一生中怎么也忘不掉的四个男人)女人最放不下的四种男人(女人一生中怎么也忘不掉的四个男人)每个人的人生都分为几个阶段,而每个女人的在这些阶段中总要经历几个男人,这些男人里有的只是过客,最后正陪伴女人到最后的可能只男人的补品(男人一生中真正需要的9种补药)男人的补品(男人一生中真正需要的9种补药)专家指出,中年男人正处在一个上有老,下有小,中间有老婆事业,惟独没有自己这样一个充满生存压力的人生阶段。为了争取到男人该有的地位和尊严,他男人帮里的经典台词(励志一生)男人帮里的经典台词(励志一生)1女人一生的梦想就是找一个好男人,男人一辈子的梦想就是找无数个好看的女人。2男人和女人,从诞生的那一天起,就各自拥有了数不清的优势和劣势,男人凭什么追经典玄幻小说(5本剧情超爽的完本玄幻小说)经典玄幻小说(5本剧情超爽的完本玄幻小说)第一本仙逆作者耳根内容介绍道在人为!少年王林几经转折,以平庸的资质踏入仙途,历经坎坷,凭着其聪睿的心智,艰难的迈向崎岖仙路。顺为凡,逆则仙有什么好看的耽美小说(小众但惊艳的原耽推荐)日落大道图片来源于网络作者卡比丘文案陈泊是亚联盟最年轻的大校,授总统勋章。然而不久后,叛国,弑父,四起证据确凿手段残忍的谋杀。陈泊桥被当庭判处死刑,立即执行。(害,文案就是没有文案瑞信胜诉将追回瑞幸咖啡3亿债务今天小编来给大家针对这个瑞信胜诉将追回瑞幸咖啡3亿债务的问题来进行一个介绍,毕竟当下也是有诸多的小伙伴对于瑞信胜诉将追回瑞幸咖啡3亿债务这个问题非常的重视的,下面大家可以看下具体的美文推荐(人生哲理美文推荐)美文推荐(人生哲理美文推荐)励志人生哲理美文,第一重要的是做人,人活着除了吃睡之外,不外乎做事情和与人交往。构成了生活的主要内容。我国内谋生需要而做,也包括出于兴趣爱好是养颜觉敏感宠物店投资创业方案预算成本的重要性其实在这些创业的道路中,我们就能够更好的去理解到各种各样的行业,因为每个行业其实都非常的不容易,所以我们就应该更好的去对这些行业有更多的了解。因为只有各种行业去了解这时,我们才能够大都会人寿怎么样(大都会上班工作怎么样)作为社区志愿者,来自大都会人寿江苏分公司营销团队的邓娟和乔喆伙伴在高温之下坚守在核酸采集点,助力医护人员开展检测工作。当志愿者没什么辛苦的,希望能为医护人员减轻一点负担,也可以让核关于古罗马的电影(古罗马的战争电影介绍几部)关于古罗马的电影(古罗马的战争电影介绍几部)斯巴达300勇士斯巴达300勇士由扎克施奈德执导,改编自漫画大师弗兰克米勒作品,由扎克施奈德和柯特约翰斯塔德编剧,杰拉德巴特勒琳娜海蒂多