二叉树的性质证明

news2024/9/24 11:32:43

二叉树的概念

  1. 满二叉树:一个二叉树,如果每一个层的结点数都达到最大值,则这个二叉树就是满二叉树。也就是说,如果一个二叉树的层数为K,且结点总数是 2 k − 1 2^k - 1 2k1 ,则它就是满二叉树。
  2. 完全二叉树:完全二叉树是效率很高的数据结构,完全二叉树是由满二叉树而引出来的。对于深度为K的,有n个结点的二叉树,当且仅当其每一个结点都与深度为K的满二叉树中编号从1n的结点一一对应时称之为完全二叉树。 要注意的是满二叉树是一种特殊的完全二叉树。
    二叉树

二叉树的性质

1. 若规定根结点的层数为1,则一棵非空二叉树的第i层上最多有 2 i − 1 2^{i-1} 2i1 个结点.

证明:
在这里插入图片描述
-

2. 若规定根结点的层数为1,则深度为h的二叉树的最大结点数是 2 h − 1 2^h-1 2h1.

证明:
前提条件:
一个深度为 ( h ) 的满二叉树在每一层都有最大数量的结点,即第 i i i 层有 2 i − 1 2^{i-1} 2i1个结点 i i i从 1 开始计数,即根结点所在的层为第一层。

归纳假设:

假设对于任意正整数 ( k < h ),深度为 ( k ) 的二叉树的最大结点数为 ( 2^k - 1 )。

归纳步骤:

  • 我们知道深度为 h h h的满二叉树的第 i i i层的结点数为 2 i − 1 2^{i-1} 2i1。那么整个树的最大结点数可以表示为:

    S = 2 0 + 2 1 + 2 2 + ⋯ + 2 h − 1 S = 2^0 + 2^1 + 2^2 + \cdots + 2^{h-1} S=20+21+22++2h1

这是一个等比数列的求和问题,其中首项 a 1 = 2 0 = 1 a_1 = 2^0 = 1 a1=20=1,公比 q = 2 q = 2 q=2,项数 n = h n = h n=h

等比数列的求和公式为:
S = a 1 ( 1 − q n ) 1 − q S = \frac{a_1(1-q^n)}{1-q} S=1qa1(1qn)

a 1 = 1 a_1 = 1 a1=1, q = 2 q = 2 q=2, n = h n = h n=h 代入得:
S = 1 ( 1 − 2 h ) 1 − 2 = 2 h − 1 S = \frac{1(1-2^h)}{1-2} = 2^h - 1 S=121(12h)=2h1

因此,深度为 h h h 的二叉树的最大结点数为 2 h − 1 2^h - 1 2h1

用错位相减法求和,我们可以这样:

假设 S S S为整个二叉树的最大结点数,那么可以写出两个等式:

S = 2 0 + 2 1 + 2 2 + ⋯ + 2 h − 2 + 2 h − 1 S = 2^0 + 2^1 + 2^2 + \cdots + 2^{h-2} + 2^{h-1} S=20+21+22++2h2+2h1

2 S = 2 1 + 2 2 + 2 3 + ⋯ + 2 h − 1 + 2 h 2S = 2^1 + 2^2 + 2^3 + \cdots + 2^{h-1} + 2^h 2S=21+22+23++2h1+2h

现在,我们从 2 S 2S 2S中减去 S S S

2 S − S = ( 2 1 + 2 2 + 2 3 + ⋯ + 2 h − 1 + 2 h ) − ( 2 0 + 2 1 + 2 2 + ⋯ + 2 h − 2 + 2 h − 1 ) 2S - S = (2^1 + 2^2 + 2^3 + \cdots + 2^{h-1} + 2^h) - (2^0 + 2^1 + 2^2 + \cdots + 2^{h-2} + 2^{h-1}) 2SS=(21+22+23++2h1+2h)(20+21+22++2h2+2h1)
化简:
S = 2 h − 1 S = 2^h - 1 S=2h1

因此,错位相减法,得到了相同的结论。

3. 对任何一棵二叉树, 如果度为0其叶结点个数为 n 0 n_0 n0 , 度为2的分支结点个数为 n 2 n_2 n2 ,则有 n 0 n_0 n0 = n 2 n_2 n2 + 1.

证明:

  1. 从结点的角度考虑:

    • 一棵二叉树包含度为0、1或2的结点。
    • 设度为0的结点数量为 n 0 n_0 n0,度为1的结点数量为 n 1 n_1 n1,度为2的结点数量为 n 2 n_2 n2
    • 总结点数 N N N 是这些结点数量之和,即 N = n 0 + n 1 + n 2 N = n_0 + n_1 + n_2 N=n0+n1+n2。(方程①)
  2. 从边的角度考虑:

    • 一棵含有 N N N 个结点的二叉树总共有 N − 1 N - 1 N1 条边。
    • 每个度为1的结点产生1条边,每个度为2的结点产生2条边,度为0的结点不产生边。
    • 所以总边数为 n 1 + 2 ⋅ n 2 n_1 + 2 \cdot n_2 n1+2n2
    • 根据边的数量可得方程 N − 1 = n 1 + 2 ⋅ n 2 N - 1 = n_1 + 2 \cdot n_2 N1=n1+2n2。(方程②)
  3. 结合① 和 ②得:

    • 将方程①和方程②联立起来,我们可以消去 n 1 + n 2 n_1 + n_2 n1+n2
      N = n 0 n_0 n0 + n 1 n_1 n1 + n 2 n_2 n2
    • N N N代入第二个方程,我们得到:
      n 0 n_0 n0 + n 1 n_1 n1 + n 2 n_2 n2 = n 1 n_1 n1 + 2 * n 2 n_2 n2 - 1
      n 0 n_0 n0 = n 2 n_2 n2 + 1

因此,得出结论:在一棵二叉树中,度为0的结点数量(叶子结点的数量)总是比度为2的结点的数量多1个。

4. 若规定根结点的层数为1,具有n个结点的满二叉树的深度,h= l o g 2 ( n + 1 ) log_2(n+1) log2(n+1).

证明:
由第二个性质可知:深度为h的二叉树的最大结点数是 2 h − 1 2^h-1 2h1.
所以,n = 2 h − 1 2^h-1 2h1,
解得:h= l o g 2 ( n + 1 ) log_2(n+1) log2(n+1)

5. 对于具有n个结点的完全二叉树,如果按照从上至下从左至右的数组顺序对所有结点从0开始编号,则对于序号为i的结点有:

  1. 若i>0,i位置结点的双亲序号:(i-1)/2;i=0,i为根结点编号,无双亲结点
  2. 若2i+1<n,左孩子序号:2i+1,2i+1>=n否则无左孩子
  3. 若2i+2<n,右孩子序号:2i+2,2i+2>=n否则无右孩子

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1963926.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++:函数模板与类模板详解

1.函数模板 在构造函数的时候&#xff0c;我们常常会考虑传入的参数的数据类型&#xff0c;比如我们写一个大小比较的函数mycmp(class1 a,class1 b)&#xff0c;则可以写出class1为int,float,double,string等各个种类的mycmp函数&#xff0c;这样会很麻烦&#xff0c;且当我们…

hot100-7-链表1

160相交链表 206反转链表 234回文链表 可以反转后半部分链表或者反转全部链表&#xff0c;然后对比输出 141环形链表 142环形链表2

大模型RAG入门及实践

前言 在大语言模型&#xff08;LLM&#xff09;飞速发展的今天&#xff0c;LLMs 正不断地充实和改进我们周边的各种工具和应用。如果说现在基于 LLM 最火热的应用技术是什么&#xff0c;检索增强生成&#xff08;RAG&#xff0c;Retrieval Augmented Generation&#xff09;技…

【JVM】JVM的组成与执行流程

JVM 由哪些部分组成&#xff0c;运行流程是什么&#xff1f; JVM 是什么 Java Virtual Machine Java程序的运行环境&#xff08;java二进制字节码的运行环境&#xff09; 好处&#xff1a; 一次编写&#xff0c;到处运行自动内存管理&#xff0c;垃圾回收机制 JVM的组成 我…

redis集群 高可用

目录 主从复制 主从复制的流程 部署主从复制 步骤 哨兵模式 数据流向 步骤 故障恢复 cluster集群 数据流向 步骤 redis集群的三种模式&#xff1a; 主从复制 奇数台 1主2从 哨兵模式 奇数台 1主2从 cluster 集群 6 台 主从复制 原理&#xff1a;主可以…

(四)延时任务篇——redisson实现延迟任务实战

前言 上一节内容中介绍了如何使用redis的zset结构实现延迟任务的实战内容&#xff0c;从使用角度来说还是略显繁琐&#xff0c;而且定时任务的方式扫描redis获取过去的任务也会存在任务空转的问题。在此基础上&#xff0c;我们可以使用redisson的阻塞队列&#xff0c;完成延迟…

探索 Python 的新世界:funcy 库的神奇之旅

文章目录 探索 Python 的新世界&#xff1a;funcy 库的神奇之旅背景&#xff1a;为何 funcy 如此迷人&#xff1f;简介&#xff1a;funcy 库是什么&#xff1f;安装&#xff1a;如何将 funcy 纳入你的项目&#xff1f;功能&#xff1a;funcy 的五大法宝应用&#xff1a;funcy 在…

图方法与机器学习实战:从理论到应用的全景指南

《动手学图机器学习》并不是一本纯粹介绍图机器学习理论的著作&#xff0c;Alessandro Negro 博士作为科学家和 Reco4 公司的 CEO&#xff0c;长期维护图数据源的推荐系统。他结合机器学习工程和图机器学习方法&#xff0c;通过推荐引擎、欺诈检测和知识图谱等案例&#xff0c;…

一键式RWKV RAG、RWKV-Keras、新论文...RWKV社区7月动态速览!

大家好&#xff0c;《RWKV 社区最新动态》迎来了第三期内容&#xff0c;本期统计了 RWKV 社区 7 月的重要动态&#xff0c;一起来看看吧&#xff01; 省流版本&#xff1a; RWKV 官方公告 RWKV-6-World 14B 模型已发布RWKV 中文官网 rwkv.cn 正式上线 RWKV 社区新项目 RWKV R…

LeetCode删除链表的倒数第 N 个结点

给你一个链表&#xff0c;删除链表的倒数第 n 个结点&#xff0c;并且返回链表的头结点。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5], n 2 输出&#xff1a;[1,2,3,5] 示例 2&#xff1a; 输入&#xff1a;head [1], n 1 输出&#xff1a;[] 示例 3&#x…

C++进阶(12)智能指针

个人主页&#xff1a;仍有未知等待探索-CSDN博客 专题分栏&#xff1a;C 一、概述 智能指针在构造的时候开辟空间&#xff0c;当智能指针生命周期结束则会自动调用析构函数释放空间。 解决问题&#xff1a;对于new开辟的时候出现异常&#xff0c;导致之前开辟的空间没有手动释放…

VMware虚拟机安装Windows7教程(超详细)

目录 1. 下载2. 安装 VMware3. 安装 Window73.1 新建虚拟机3.2 安装操作系统 4. 设置共享文件夹5. 安装 VMware Tools5.1 下载&安装缺少驱动5.2 开始安装 VMware Tools 6. 未&#x1f414;&#x1f525;解决 创作不易&#xff0c;禁止转载抄袭&#xff01;&#xff01;&…

MyBatis代码生成器:SpringBoot 引入MybatisGenerator

1. 引入插件 <plugin><groupId>org.mybatis.generator</groupId><artifactId>mybatis-generator-maven-plugin</artifactId><version>1.3.5</version><configuration><!--generator配置⽂件所在位置--><configurati…

7.5 grafana上导入模板看图并讲解告警

本节重点介绍 : blackbox_exporter grafana大盘导入和查看告警配置讲解 grafana大盘 grafana 上导入 blackbox_exporter dashboard 地址 https://grafana.com/grafana/dashboards/13659举例图片http总览图value_mapping设置 展示设置阈值&#xff0c;展示不同背景色 告警配…

过滤和筛选树形结构数据

场景 在平时项目开发中经常会遇到树形数据的处理&#xff0c;如树形数据根据条件值过滤掉不符合条件的选项&#xff0c;如果是最后的子数据符合条件那么就会保存这条树形链路的所有直属数据并过滤掉所有非直属的数据。如果是符合条件的数据还有子元素&#xff0c;那么就保留所…

算法强训day18

一、压缩字符串 链接&#xff1a;压缩字符串(一)_牛客题霸_牛客网 #include<iostream> using namespace std; #include<vector> class Solution { public:/*** 代码中的类名、方法名、参数名已经指定&#xff0c;请勿修改&#xff0c;直接返回方法规定的值即可***…

mac电脑不能快速传输文件的原因是什么 mac无法拷贝文件到移动硬盘的原因是什么 macbook传输速度慢

新买的移动硬盘连接上Mac电脑&#xff0c;想要将Mac上的文件拷贝到移动硬盘里&#xff0c;但是Mac无法拷贝文件到移动硬盘里&#xff0c;直接拖拽、剪切都不行&#xff0c;尤其是一些大的安装包或视频文件的拷贝&#xff0c;需要花费大量的时间&#xff0c;给Mac用户造成了很多…

Excel文档受损打不开,还能修复吗?

Excel作为最常用的表格文件&#xff0c;在我们日常的工作当中使用尤其频繁&#xff0c;且经常涉及到一些重要数据文件的编辑和保存。然而&#xff0c;有时我们会遇到Excel文档受损而无法打开的情况&#xff0c;这无疑会给我们的工作带来诸多不便。那么&#xff0c;当Excel文档受…

SpringCloud API网关

SpringCloud API网关 文章目录 SpringCloud API网关1. 概念2. Spring Cloud Gateway2.1 介绍2.2 操作方式 3.Route Predicate Factories3.1 介绍3.2 使用方式 1. 概念 API网关&#xff0c;简称网关&#xff0c;本身是一个服务&#xff0c;通常作为后端服务的唯一入口&#xff…

git学习准备阶段

准备阶段 ubantu下载安装git sudo apt-get install git查看git版本 git -v注册用户名 git config --global user.name [name][name]填入自己的名字&#xff0c;如果没有空格的情况下&#xff0c;可以不加引号,–global是在全局下操作&#xff0c;如果没有这个参数就只是在本…