二叉树的5个重要性质「建议收藏」

二叉树的5个重要性质「建议收藏」1.在二叉树的第i层上最多有2 i-1 个节点。(i>=1) 用归纳法证明:归纳基:i=1层时,只有一个根结点,          2i-1=20=1;归纳假设:假设i=k时,命题成立;归纳证明:二叉树上每个结点至多有两棵子树,则第k+1层的结点数最多为2k-12=2k+1-1。

大家好,又见面了,我是你们的朋友全栈君。

1.在二叉树的第i层上最多有2 i-1 个节点 。(i>=1)

 用归纳法证明:

归纳基:i = 1 层时,只有一个根结点,
                    2i-1 = 20 = 1;

归纳假设:假设i=k时,命题成立;

归纳证明:二叉树上每个结点至多有两棵子树,则
第 k+1 层的结点数 最多为2k-1 x 2 = 2k+1-1 。

2.二叉树中如果深度为k,那么最多有2k-1个节点。(k>=1)

 证明:

基于性质1,深度为 k 的二叉树上的结点数至多为
       2^0+2^1+ …..+2^k -1 = 2^k -1 

3.n0=n2+1  n0表示度数为0的节点 n2表示度数为2的节点

    推导过程 根据两个公式

    1. n=n0+n1+n2    n表示二叉树中的节点总个数,n1表示度数为1的节点个数

    2.n-1=2n2+n1      通过观察二叉树我们可知,除了根节点之外,其余的任何节点都有一个入口分支,其他节点都有一个入口分支,那么节点的总分支数等于节点个数减一,度数为2的节点有2个出口分支,度数为一的有1个出口分支,度数为0的节点没有出口分支 所以总的分支个数为 2n2+n1

 

4.在完全二叉树中,具有n个节点的完全二叉树的深度为[log2n]+1,其中[log2n]+1是向下取整。

二叉树的5个重要性质「建议收藏」

     推导过程根据性质 2: 假设深度为k 的满二叉树的节点个数一定为2k-1,那么n=2k-1推得满二叉树的度数为k=log2(n+1);

 完全二叉树是具有n个节点的二叉树,若按层序编号那么其编号与同样深度的满二叉树的节点编号在二叉树的位置相同,那么他就是完全二叉树,也就是说他的叶子几点只可能出现在最下边的两层,他的深度等于满二叉的深度,但他的节点一定少于等于满二叉树的节点个数,但一定多与2k-1-1,2k-1-1第度数为k-1层的满二叉树的节点个数,那么n就满足2k-1-1<n<=2k-1,由于n为整数那么n<=2k-1可以推出n<=2k ,n>2k-1-1可以推出 n>=2k-1,所以2k-1<n<=2k  ,即可得k-1<=log2n<k 而k作为整数因此k=[log2n]+1

设 完全二叉树的深度为 k 

则根据第二条性质得 2k-1 -1<n ≤ 2k -1,即2k-1≤  n < 2k      即   k-1 ≤  log2 n < k 

因为 k 只能是整数,因此, k =[log2n] + 1

5.若对含 n 个结点的完全二叉树从上到下且从左至右进行 1 至 n 的编号,则对完全二叉树中任意一个编号为 i 的结点:

(1) 若 i=1,则该结点是二叉树的根,无双亲, 否则,编号为 [i/2] 的结点为其双亲结点;  

(2) 若 2i>n,则该结点无左孩子,  否则,编号为 2i 的结点为其左孩子结点;

(3) 若 2i+1>n,则该结点无右孩子结点,  否则,编号为2i+1 的结点为其右孩子结点。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/138451.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长

相关推荐

  • 有哪些顶级水平的中国程序员?[通俗易懂]

    有哪些顶级水平的中国程序员?[通俗易懂]本文转载自启舰杂谈我们熟知的很多程序员都是国外的。那我们中国有没有顶尖级的程序员,出于好奇,我全网进行了搜罗,这里把我认为比较厉害的一些程序员展示给大家。篇幅有限,很多程序员我也没听过,所以就没有展示。排名顺序也没什么特别的,先看上谁,谁就排第一。比如,第一的尤雨溪单纯就是因为他长的帅如果你认为还有哪位大咖是你心目中的神,可以列出来,如果列的人多的话,我再搞一期给大家介绍介绍。一、尤雨溪江湖流传一个小故事:一款名叫Clear的软件,在…

    2022年10月11日
  • Android中文API(117)——WrapperListAdapter

    Android中文API(117)——WrapperListAdapter

    2021年8月11日
  • Redis的持久化-RDB

    Redis的持久化-RDB

    2022年2月12日
  • java snmp walk_snmpwalk用法

    java snmp walk_snmpwalk用法snmpwalk语法:snmpwalk交换机或路由器IP地址-cSNMP读密码-v1或2(代表SNMP版本)OID(对象标示符)用法举例:1、snmpwalk-cpublic-v1-mALL192.168.30.49.1.3.6.1.2.1.25.1得到取得windows端的系统进程用户数等2、snmpwalk-cpublic-v1-mALL192…

    2022年6月30日
  • c浅拷贝和深拷贝的区别_js中深拷贝和浅拷贝的区别

    c浅拷贝和深拷贝的区别_js中深拷贝和浅拷贝的区别先考虑一种情况,对一个已知对象进行拷贝,编译系统会自动调用一种构造函数——拷贝构造函数,如果用户未定义拷贝构造函数,则会调用默认拷贝构造函数。先看一个例子,有一个学生类,数据成员时学生的人数和名字:#include<iostream>usingnam…

    2022年9月1日
  • 本地Web服务器搭建[通俗易懂]

    本地Web服务器搭建[通俗易懂]1.Dreamweaver->新建站点->站点名称+本地站点文件夹->保存2.IE->Internet选项->安全标签->自定义级别(安全设置对话框)->启用“通过域访问数据源”->确定3.将webs.exe(WebServer)放至脚本根目录上一级目录,运行webs.exe4.启动浏览器输入IP地址:127.0.0.1即可访问本地的We

    2022年5月27日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号