二叉树性质的性质及证明整理

二叉树性质的性质及证明整理——整理于2020.4.29二叉树的性质及证明性质1:在二叉树的第i层上至多有2(i-1)个结点(i>=1)证明:数学归纳法(1) i=1时只有一个根节点。显然2(i-1)=20=1是对的(2) 假设对所有的j,1<=j<i,命题成立,即第j层上至多有2(j-1)个结点(3)由归纳假设可得:第i-1层上至多有2(i-2)个结点。由于二叉树…

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

——整理于2020.4.29

二叉树的性质及证明

性质1:在二叉树的第i层上至多有2(i-1)个结点 (i>=1)

证明:数学归纳法
(1) i=1时只有一个根节点。显然 2(i-1)= 20= 1是对的
(2) 假设对所有的 j, 1<= j <i, 命题成立,即第j层上至多有2(j-1)个结点
(3) 由归纳假设可得: 第i-1层上至多有2(i-2)个结点。由于二叉树的每个结点的度数至多为2,所以在第i层上的结点数最多为i-1层上的两倍,即2*2(i-2)=2(i-1),即得出第i层上结点数至多为2(i-1)

性质2:深度为k的二叉树至多有2(k-1)个结点(k>=1)

证明:等比数列求和( Sn=a1(1-qn) / 1-q )
由性质一( 在二叉树的第i层上至多有2(i-1)个结点(i>=1) )可知,深度为k的二叉树的最大结点数为:
在这里插入图片描述

性质3:对任何一棵二叉树T, 如果其终端结点(叶子结点)数为 n0, 度数为2的结点数为 n2, 则n0=n2+1

证明:
设n1为二叉树T中度数为1的结点数,n为二叉树结点总数,则有:
n=n0+n1+n2
又因为二叉树中除根节点外每一个结点都对应一个分支,则分支数B=n-1,
由于这些分支是由度为一和二的结点射出的,所以有B=n1+2*n2,所以有:
n=n1+2*n2+1 ②
联立①②可得 n0=n2+1

完全二叉树的两个重要性质

性质4: 具有n个结点的完全二叉树的深度为 ⌊log2n⌋+1
注:⌊x⌋表示不大于x的最大整数

证明:假设完全二叉树的深度为k,则根据性质2和完全二叉树的定义有
2(k-1) -1 < n <= 2k -1
由于n为整数,上式可变为:
2(k-1) <= n < 2k
两边同时取对数得:
k-1 <= log2n < k
因k为整数,即得k= ⌊log2n⌋+1

性质5:
如果对一颗有n个结点得完全二叉树(其深度为⌊log2n⌋ +1)得结点按层序编号(从第1层到第⌊log2n⌋ +1层,每层从左到右),对任一结点 i (1<= i <= n)有:
1.如果 i =1,则结点 i 是二叉树得根,无双亲;如果 i>1,则其双亲是结点⌊i/2⌋
2.如果 2i > n,则结点 i 无左孩子(结点 i 为叶子结点); 否则其左孩子是结点 2i
3.如果 2i+1 > n,则结点 i 无右孩子; 否则其右孩子是结点2i+1

证明:(暂时简单说明,有空再补)
参考大话数据结构/北京大学出版社/程杰
/图片来自大话数据结构/北京大学出版社

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

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/138222.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 设计模式之代理模式、适配器模式和外观模式

    编写基于另一组类的包装器接口是一项常见的API设计任务,例如,你的工作可能是维护一个大型的遗留代码库,相比重构所有代码,你更愿意审计一个新的,更简洁的API,以隐藏所有的底层遗留代码;或者你可能已经

    2021年12月19日
  • Velocity语法大全

    Velocity语法大全一、基本语法 1、”#”用来标识Velocity的脚本语句,包括#set、#if、#else、#end、#foreach、#end、#iinclude、#parse、#macro等; 如: #if($info.imgs) <imgsrc=”$info.imgs”border=0> #else <imgsrc=”noPhoto.jpg”> #end2、”$”用来标识一个对象(或理解为…

  • JetBrains WebStorm 安装教程

    JetBrains WebStorm 安装教程首先声明,此方法仅用来参考学习,不得用于商业用途,请支持正版,学生可以免费申请到正版软件。网上有很多激活成功教程方法,可能不同的版本不一样,这篇文章就只针对JetBrainsWebStorm2018.1.5×64版本的软件。因为本人用的就是这个版本,亲测有效。——————2019年10月首先需要下载一个jar包:JetbrainsIde…

  • httprunner(9)运行测试用例的方式总结「建议收藏」

    httprunner(9)运行测试用例的方式总结「建议收藏」前言用过pytest的小伙伴都知道,pytest的运行方式是非常丰富的,可以说是你想怎么运行怎么运行,想运行哪些运行哪些,那httprunner是否同样可以呢?运行用例的各种方式运行指定路径的用

  • 关于hard work的名言_partyhard

    关于hard work的名言_partyhard今天看了美团饿了么的app撕逼,作为程序员而且是app开发者,表示深深的蛋疼了。知乎原文:如何评价美团外卖商家版强杀竞争对手的商家版App进程?不评价回答里各种关于程序员节操问题的论述,能看到这篇博客的,心里都明白需求是谁提的。单聊聊hardcode的事。我不是科班出身,所以之前还这个词还真不是很熟悉。magicnumber倒是听说过。扯远了,http://blog.csdn

    2022年10月28日

发表回复

您的电子邮箱地址不会被公开。

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