树的应用 —— 二叉树:二叉树的性质

news/2024/5/1 8:25:24/文章来源:https://blog.csdn.net/weixin_44226181/article/details/126965534

树的应用 —— 二叉树

二叉树(Binary Tree)是n (n ≥0)个节点构成的集合,或为空树(n =0),或为非空树。

对于非空树T ,要满足:

①有且仅有一个被称为根的节点;

②除了根节点,其余节点分为两个互不相交的子集T1和T2 ,分别被称为T 的左子树和右子树,且T1 和T2 本身都是二叉树。

二叉树是种特殊的树,它最多有两个子树,分别为左子树和右子树,二者是有序的,不可以互换。也就是说,在二叉树中不存在度大于2的节点。

【二叉树的总共5种形态】

在这里插入图片描述

【二叉树的性质】

[性质1:在二叉树的第 i 层上至多有2^(i -1) 个节点。]

一棵二叉树如下图所示。

在这里插入图片描述

由于二叉树的每个节点最多有2个孩子,第1层树根为1个节点,第2层最多为2个节点,第3层最多有4个节点,因为上一层的每个节点最多有2个孩子,因此当前层最多是上一层节点数的两倍。

数学归纳法证明:

  1. i =1时:只有一个根节点,2^(i -1) =2^0 =1。
  2. i >1时:假设第i -1层有2^(i -2) 个节点,而第i 层节点数最多是第i -1层的两倍,即第i 层节点数最多有2×2^(i -2) =2(i -1) 。

[性质2:深度为 k 的二叉树至多有2^k - 1个节点。]

证明:如果深度为k 的二叉树,每一层都达到最大节点数,如下图所示,

在这里插入图片描述

则把每一层的节点数加起来就是整棵二叉树的最大节点数。

[性质3:对于任何一棵二叉树,若叶子数为n0 ,度为2的节点数为n2 ,则n0 =n2 +1。]

证明:

二叉树中的节点度数不超过2,因此共有3种节点:度为0、度为1、度为2。设二叉树总的节点数为n ,度为0的节点数为n0 ,度为1的节点数为n1 ,度为2的节点数为n2 ,总节点数等于三种节点数之和,即n =n0 +n1 +n2 。

而总节点数又等于分支数b +1,即n =b +1。为什么呢?如下图所示,

在这里插入图片描述

从下向上看,每一个节点都对应一个分支,只有树根没有对应的分支,因此总的节点数为分支数b +1。

而分支数b 怎么计算呢?从上向下看,如下图所示,

在这里插入图片描述

每个度为2的节点都产生2个分支,度为1的节点产生1个分支,度为0的节点没有分支,因此分支数b =n1 +2n2 ,则n =b +1=n1 +2n2 +1。而前面已经得到n =n0 +n1 +n2 ,两式联合得:n0 =n2 +1。

[有两种特殊的二叉树:满二叉树 和 完全二叉树]

满二叉树:一棵深度为k 且有2^k -1个节点的二叉树。满二叉树的每一层都“充满”了节点,达到最大节点数,如下图所示。

在这里插入图片描述

完全二叉树:除了最后一层,每一层都是满的(达到最大节点数),最后一层节点是从左向右出现的。深度为k 的完全二叉树,当且仅当其每一个节点都与深度为k 的满二叉树中编号为1~n 的节点一一对应。例如,完全二叉树如下图所示,

在这里插入图片描述

它和上图中的满二叉树编号一一对应。完全二叉树除了最后一层,前面每一层都是满的,最后一层必须从左向右排列。也就是说,如果2没有左孩子,就不可以有右孩子,如果2没有右孩子,则3不可以有左孩子。

[性质4:具有n 个节点的完全二叉树的深度必为⌊log2n ⌋+1。]

证明:假设完全二叉树的深度为k ,那么除了最后一层,前k -1层都是满的,最后一层最少有一个节点,如下图所示。

在这里插入图片描述

最后一层最多也可以充满节点,即2^(k -1) 个节点,如下图所示。

在这里插入图片描述

因此,2^(k -1) ≤n ≤2^k -1,右边放大后,2^(k -1) ≤n <2^k ,同时取对数,k -1≤log2n <k ,所以k =⌊log2n ⌋ +1。其中,⌊⌋表示取下限,⌊x ⌋表示小于x 的最大整数,如⌊3.6⌋=3。

例如,一棵完全二叉树有10个节点,那么该完全二叉树的深度为k=⌊log2 10⌋+1=4。

[性质5:对于完全二叉树,若从上至下、从左至右编号,则编号为i 的节点,其左孩子编号必为2i ,其右孩子编号必为2i +1;其双亲编号必为i /2。]

完全二叉树的编号如下图所示。

在这里插入图片描述

例如,一棵完全二叉树如下图所示。节点2的双亲节点为1,左孩子为4,右孩子为5;节点3的双亲节点为1,左孩子为6,右孩子为7。

在这里插入图片描述

【例题】

  1. 一棵完全二叉树有1001个节点,其中叶子节点的个数是多少?

首先找到最后一个节点1001的双亲节点,其双亲节点编号为1001/2=500,该节点是最后一个拥有孩子的节点,其后面全是叶子,即1001-500=501个叶子。

在这里插入图片描述

  1. 一棵完全二叉树第6层有8个叶子,则该完全二叉树最少有多少个节点,最多有多少个节点?

完全二叉树的叶子分布在最后一层或倒数第二层。因此该树有可能为6层或7层。

节点最少的情况(6层):8个叶子在最后一层(即第6层),前5层是满的,如下图所示。

在这里插入图片描述

最少有2^5 -1+8=39个节点。

节点最多的情况(7层):8个叶子在倒数第2层(即第6层),前6层是满的,第7层最少缺失了8×2个节点,因为第6层的8个叶子如果生成孩子的话,会有16个节点。如下图所示,最多有2^7 -1-16=111个节点。

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

FFmpeg入门详解之20:视频编码原理简介

视频为何需要压缩&#xff1f; 原因&#xff1a;未经压缩的数字视频的数据量巨大 ● 存储困难 ○ 一G只能存储几秒钟的未压缩数字视频。 ● 传输困难 ○ 1兆的带宽传输一秒的数字电视视频需要大约4分钟。 主要压缩了什么东西&#xff1f; 原始视频压缩的目的是去除冗余信息&a…

结构体的理解

结构体前言结构体&#xff1f;定义变量如何赋初值&#xff1f;结构体的访问结构体的嵌套使用注意事项结构体的大小内存对齐默认对齐数的修改为什么存在内存对齐&#xff1f;结构体传参位段什么是位段&#xff1f;位段的内存分配深入剖析位段“存”数据位段的“取”位段的跨平台…

Idea工具中,使用Mapper对象有红线

背景&#xff1a; IDEA开发工具&#xff0c;springboot mybatis项目 &#xff08;这个是不需要改的&#xff0c;也不算是问题&#xff0c;因为项目并不会报错&#xff0c;只是作者好奇找了下问题&#xff0c;并记录一下&#xff09; 问题描述 mapper对象在service层有红线&a…

8 位卷王!总结 1135 页 Java 核心面试手册,硬钢 BATJ 一线大厂面试官

又到了金九银十求职季&#xff01; HR 开始拼业绩&#xff0c;招聘网站也开始释放出大量岗位&#xff0c;转行跳槽、毕业求职的人都开始行动起来&#xff01; 此时&#xff0c;对于大多数程序员来说&#xff0c;最大的目标就是&#xff1a;进大厂&#xff01; 大厂为什么这么…

ArcGIS Map Sdk for unity使用

本文主要讨论离线模式。 目录 1.底图tpk文件制作 2.3D图层slpk文件制作 3.导入使用 1.底图tpk文件制作 软件&#xff1a;91卫图助手 Arcgis Pro 操作步骤&#xff1a; 打开91卫图助手&#xff0c;更换底图为高德影像/腾讯影像。(百度影像的地理投影格式有自身加密&#xff…

剖析容器运行时

特别说明&#xff1a;一部分转载自大佬文章&#xff1a;https://blog.csdn.net/weixin_39246554/article/details/120926174&#xff08;不得不说大佬总结的真好啊&#xff01;&#xff01;&#xff01;&#xff09; 剩下的听老王公开课总结。 k8s官网关于运行时的说明&#x…

Typora Mac版本安装Pandoc导出文件为word格式(windows可通用)

我们在用Typora时导出的格式常常为PDF格式&#xff0c;但是如果我们要将文件导出为word格式的时候却需要安装插件PanDoc&#xff0c;我目前使用的是Mac版本的Typora&#xff0c;给大家分享一下如何安装Pandoc以及导出word格式文件。 1.根据Typora中的说明进入GitHub下载Pandoc…

Maven安装配置

Maven安装配置一、下载 apache-maven-3.6.1Maven官网:https://maven.apache.org/download.cgi(或)直接下载maven-3.8.6:https://dlcdn.apache.org/maven/maven-3/3.8.6/binaries/apache-maven-3.8.6-bin.zip解压到当前文件夹二、配置 maven 环境变量右键此电脑 - 属性 - 高级…

MySQL学习——执行计划

MySQL中可以通过explain关键字模拟优化器执行SQL语句,从而知道MySQL是如何处理SQL语句的,这将有利我们做代码的优化。 1、MySQL查询执行过程客户端向MySQL服务器发送一条查询请求 服务器首先检查查询缓存,若缓存中存在,则立刻返回存储在缓存中的结果。否则进入下一阶段 服务…

扫码挪车小程序源码专业版上线了

1 、做挪车码之前&#xff0c;先说一些我个人的观点&#xff0c;大家一起探讨学习交流。 2 、挪车码已经是普遍已久的项目&#xff0c;其核心主要在于解决了车主的隐私问题。 3 、观察过目前市面上所有的挪车码系统&#xff0c; 公司也购买了一套测试了完整流程&#xff0c;盈…

【图像分割】基于matlab萤火虫算法图像分割【含Matlab源码 2136期】

一、获取代码方式 获取代码方式1: 完整代码已上传我的资源:【图像分割】基于matlab萤火虫算法图像分割【含Matlab源码 2136期】 点击上面蓝色字体,直接付费下载,即可。 获取代码方式2: 付费专栏图像处理(Matlab) 备注: 点击上面蓝色字体付费专栏图像处理(Matlab),…

parted分区步骤

parted分区步骤概述 通常我们用的比较多的一般都是fdisk工具来进行分区,但是现在由于磁盘越来越廉价,而且磁盘空间越来越大;而fdisk工具他对分区是有大小限制的,它只能划分小于2T的磁盘。但是现在的磁盘空间很多都已经是远远大于2T了,甚至达到2.5T和3T,那要怎么办能,有两…

路径规划总结(一)

第三讲 路径规划 ps:排版有一些问题&#xff0c;懒得改了&#xff0c;见Github 一、导航规划简介 导航规划&#xff1a;在给定环境的全局或局部知识以及一个或者一系列目标位置的条件下&#xff0c;使机器人能够根据知识和传感器感知信息高效可靠地到达目标位置。 导航规划类…

告别传统FTP!该了解一下替代FTP的新产品了

在某些情况下&#xff0c;需要从服务器上传&#xff08;或下载&#xff09;文件。多年来&#xff0c;最流行的文件传输方法是文件传输协议&#xff08;FTP)。FTP的一大优点是它支持断点续传。FTP收获了方便性&#xff0c;却在安全性上有所欠缺。FTP未加密&#xff0c;这意味着格…

Cache-Augmented Inbatch Importance Resampling for Training Recommender Retriever

目录概符号说明启发本文方法BIR (inbatch importance resampling)XIR (Cache-Augmented Resampling)Chen J., Lian D., Li Y., Wang B., Zheng K. and Chen E. Cache-augmented inbatch importance resampling for training recommender retriever. In Advances in Neural Info…

一条sql了解MYSQL的架构设计

1 前言 对于一个服务端开发来说 MYSQL 可能是他使用最熟悉的数据库工具&#xff0c;然而&#xff0c;大部分的Java工程师对MySQL的了解和掌握程度&#xff0c;大致就停留在这么一个阶段:它可以建库、建表、建索引&#xff0c;然后就是对里面的数据进行增删改查&#xff0c;语句…

MacOS/OSX docker修改已运行容器参数的方法

比如我们刚刚docker run了一个容器,然后里面已经配置了一些信息,装了一些东西,然后我发现我忘记了挂载一个文件夹,怎么修改他们呢? 第一个方法: export容器为镜像再import这个镜像 第二个方法: 把现有的容器提交成镜像,然后重新运行. 以上两种方法都相当于你把一台电…

配置服务器入栈

配置服务器入栈 上回传送门 书接上回 登录我们的服务器管理页面 点击入站列表->点击号 配置如下 注意&#xff1a; 协议是vless 域名是cloudflare上我们设置的二级域名 公钥文件路径就是我们SHH工具上root 文件夹下cret 文件夹下面的证书 公钥名就是我们的证书路径 密钥…

Spring Cloud Alibaba现在还值不值学 ?

6年前面试最常问的并且可以顺利拿到高薪的技能是 Dubbo &#xff0c;2年前面试&#xff0c;只要你简历上有 Spring Cloud 项目的相关经验&#xff0c;肯定会打动面试官&#xff0c;现在呢&#xff1f;恐怕简历上有Dubbo和简单的Spring Cloud技术和经验是无法让面试官高看你的。…

Eureka注册中心以及Ribbon负载均衡

Eureka注册中心 远程调用的问题 1、服务消费者改如何获取服务提供者的地址消息&#xff1f; 2、如果服务提供者有多个&#xff0c;消费者如何进行选择&#xff1f; 3、 消费者如何得知服务提供者的健康状态&#xff1f; Eureka的作用 服务每隔30s给Eureka发送心跳&#xff0c;…