二叉树性质总结

二叉树性质总结性质1:二叉树第i(i>=1)层上的节点数最多为2^(i-1)证明:归纳基础:第一层有一个节点,第二层最多有两个节点,第三层最多有四个节点,以此类推,数学归纳法证明如下:i=1时,2^(i-1)=2^0=1,因为第一层上为根节点,所以命题成立。归纳假设:假设对所有的j(1归纳步骤:根据归纳假设,第i-1层上至多有2(i-2)个节点,由于二叉树每个节点至多有两个孩子节点,所以第i

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

性质1:二叉树第i(i>=1)层上的节点数最多为2^(i-1)

证明:

归纳基础:第一层有一个节点,第二层最多有两个节点,第三层最多有四个节点,以此类推,数学归纳法证明如下:

i=1时,2^(i-1)=2^0=1,因为第一层上为根节点,所以命题成立。

归纳假设:假设对所有的j(1<=j<i)命题成立,即第j层上至多有2^(j-1)个节点,需要证明j=i时命题依然成立。

归纳步骤:根据归纳假设,第i-1层上至多有2(i-2)个节点,由于二叉树每个节点至多有两个孩子节点,所以第i层上的最多节点数是第i-1层上最多节点数的2倍,即j=i时,该层上最多有2^(i-2)*2=2^(i-1)个节点,因此命题成立。

性质2:高度为k的二叉树最多有2^k – 1个节点。

性质2可以根据性质1证明,即SUM(2^(i-1))(1<=i<=k)  =  2^k – 1(等比数列求和)

性质3:对于任何二叉树T,n0、n1、 n2分别代表度数为0、1、2的节点个数,则n0=n2+1

证明:因为二叉树所有节点的度数均不大于2,所以节点总数(记为n)应该等于0度节点数、1度节点数、2度节点数之和,即n0+n1+n2=n;

1度节点有一个儿子,2度节点有两个儿子,所以二叉树中所有儿子节点的个数是n1+n2,二叉树中只有根节点不是任何节点的儿子节点,因此二叉树中节点总数可以表示为n=n1+2n2+1

有上述两个公式n0+n1+n2=n、n=n1+2n2+1可得:n0=n2+1

性质4:具有n个节点的完全二叉树(包括满二叉树)的高度为[logn]+1(不做特殊说明这里的log都是以2为底的)

证明:设所求完全二叉树的深度为k,有完全二叉树的定义可知,其前k-1层是深度为k-1的满二叉树,一共有2^(k-1)-1个节点,由于完全二叉树深度为k,故第k蹭上还有若干节点,因此该完全二叉树的节点个数n>2^(k-1)-1。由性质2可知n<=2^k – 1,所以

2^(k-1) – 1< n <= 2^k-1

由此推导可得2^(k-1) <= n < 2^k,取对数后有

k-1 <= logn < k

因为k为整数,所以有k-1=logn,即可得k=[logn]+1

二叉树还具有其他性质,读者有兴趣可以自己推导得出,对以上四种性质比较常用,并且对于性质4在研究二叉树时间复杂度的时候可能会有所帮助理解nlogn这种时间复杂度的来源。

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

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

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


相关推荐

  • 多种DLL注入技术原理介绍

    多种DLL注入技术原理介绍本文中我将介绍DLL注入的相关知识。不算太糟的是,DLL注入技术可以被正常软件用来添加/扩展其他程序,调试或逆向工程的功能性;该技术也常被恶意软件以多种方式利用。这意味着从安全角度来说,了解DLL注入的工作原理是十分必要的。不久前在为攻击方测试(目的是为了模拟不同类型的攻击行为)开发定制工具的时候,我编写了这个名为“injectAllTheThings”的小工程的大…

    2022年5月17日
    33
  • 玩转软路由 篇四:软路由中OpenWRT作为旁路由的安装设置教程

    玩转软路由 篇四:软路由中OpenWRT作为旁路由的安装设置教程开篇说一些仁者见仁智者见智的话,先声明,这只是代表我自己近期浅陋的看法。看到很多人玩路由器,刷各种固件,什么爱快、高格、老毛子、OpenWRT什么的,自己也折腾过,也在恩山论坛里下载各路大神的固件使用。作为一个小白,就自然而然想到,这么多固件,哪个最好?当然对于这个问题,每个人的回答都不一样,毕竟适合自己的才重要。经过我自己不断在网上寻找答案,最后形成了一个成熟的看法,那就是真正的好不好,关键点在驱动,驱动做得会使得路由系统如虎添翼。但是,很多芯片厂家在卖芯片的时候是需要承诺不可进行二次开发的,所以路由器大

    2022年6月11日
    91
  • 最新版黑苹果MacOS 10.14 Mojave安装教程

    最新版黑苹果MacOS 10.14 Mojave安装教程安装分为三部分:1.制作安装U盘2.安装MacOS系统3.安装clover(四叶草)用到的安装工具(按用到的先后顺序):1.Clover_v2.4k_r4679.pkg2.CloverConfigurator.zip3.一般台式机都能使用的通用EFI下载链接:https://pan.baidu.com/s/1sk6tYbCZ0riy0I6…

    2022年6月11日
    57
  • linux时间戳转换日期格式_java时间戳转换成年月日时分秒

    linux时间戳转换日期格式_java时间戳转换成年月日时分秒unix时间戳 date +%s linux: 将时间戳1123495443 换算成可以识别的年月日分秒 date -d ‘1970-01-01 UTC 1123495443 seconds’ FreeBSD: date -j -f “%Y%m%d ” `date +%Y%m%d` “+ %s” #date指令 源日期格式  要转换出的格式管理员在

    2022年10月3日
    3
  • Android 开发(三)数据库存储

    Android 开发(三)数据库存储

    2021年8月26日
    47
  • IDEA之配置SVN「建议收藏」

    IDEA之配置SVN「建议收藏」在实际公司开发的项目中,我们往往需要使用svn对特定功能模块进行版本管理,下面为IDEA配置SVN的相关步骤以及会遇到的一些问题目录一、SVN配置1.1下载SVN1.2安装SVN1.3配置SVN二、常见问题2.1.IDEA文件全部变红2.2Warning:java:源值1.5已过时2.2.1调整project版本一、SVN配置1.1下载SVNTortoiseSVN官网地址:https://tortoisesvn.net/downloads.html1.2安装SVN基本是

    2022年5月14日
    56

发表回复

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

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