Java 二叉数(1)

一、认识树

树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。它具有以下的特点:

  •          有一个特殊的结点,称为根结点,根结点没有前驱结点
  •         除根结点外,其余结点被分成M(M > 0)个互不相交的集合T1、T2、......、Tm,其中每一个集合Ti (1 又是一棵与树类似的子树。每棵子树的根结点有且只有一个前驱,可以有0个或多个后继
  •         树是递归定义的。

注意:

  • 树形结构中,子树之间不能有交集,否则就不是树形结构
  • 除了根节点外,每个节点有且仅有一个父节点
  • 一棵n个节点的树有n-1条边

二、树中的概念

结点的度:一个结点含有子树的个数称为该结点的度   如上图:A的度为3

树的度:一棵树中,所有结点度的最大值称为树的度   如上图:树的度为3

叶子结点或终端结点:度为0的结点称为叶结点   如上图:K  J  L节点为叶结点

双亲结点或父结点:若一个结点含有子结点,则这个结点称为其子结点的父结点   如上图:A是B的父结点

孩子结点或子结点:一个结点含有的子树的根结点称为该结点的子结点   如上图:B是A的孩子结点

根结点:一棵树中,没有双亲结点的结点    如上图:A

结点的层次:从根开始定义起,根为第1层,根的子结点为第2层,以此类推

树的高度:树中结点的最大层次   如上图:树的高度为4

树的深度:节点的相对位置,如上图:B的深度是2,E的深度是3,J的深度是4

三、二叉树

1、概念

一棵二叉树是结点的一个有限集合,该集合:

  • 或者为空
  • 或者是由一个根节点加上两棵别称为左子树和右子树的二叉树组成。

注意:

  • 二叉树不存在度大于2的结点
  • 二叉树的子树有左右之分,次序不能颠倒,因此二叉树是有序树

2、两种特殊的二叉树 

  • 满二叉树: 一棵二叉树,如果每层的结点数都达到最大值,则这棵二叉树就是满二叉树。也就是说,如果一棵二叉树的层数为K,且结点总数是2^{k}-1 ,则它就是满二叉树。
  •  完全二叉树: 完全二叉树是效率很高的数据结构,完全二叉树是由满二叉树而引出来的。对于深度为K的,有n个结点的二叉树,当且仅当其每一个结点都与深度为K的满二叉树中编号从0至n-1的结点一一对应时称之为完全二叉树。也就是从上到下,从左到右,需要依次放节点,不能跳着放。要注意的是满二叉树是一种特殊的完全二叉树。

没有11节点,直接10到12,这就不是完全二叉树 

3、二叉树的性质 

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

2. 若规定只有根结点的二叉树的深度为1,则深度为K的二叉树的最大结点数是2^{k}-1(k>=0)

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

度为0的节点会比度为2的节点多一个

公式推导:

4. 具有n个结点的完全二叉树的深度k为上取整

求解上述二叉树的深度:节点n=9     9+1=10    2^{3}=8\, \, \, \, \, \, \, 2^{4}=16   因此取4 

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

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

例如:

已知孩子节点下标是i,求父亲节点:(i-1)/  2

已知父亲节点下标是i,左孩子:2*i+1,右孩子:2*i+2(前提:孩子节点序数小于n)

4、例题

1. 某二叉树共有 399 个结点,其中有 199 个度为 2 的结点,则该二叉树中的叶子结点数为( )

A 不存在这样的二叉树

B 200

C 198

D 199

题解:n0 = n2+1 = 200

2.在具有 2n 个结点的完全二叉树中,叶子结点个数为( )

A n

B n+1

C n-1

D n/2

偶数个节点

n0:

n1: 1

n2: 

奇数个节点

 

n0:

n1: 0

n2: 

题解:

2n是个偶数,所以2n = n0+1+n2

n0=n2+1

所以2n = n0 + 1 + n0 - 1

n0 = n

3.一个具有767个节点的完全二叉树,其叶子节点个数为()

A 383

B 384

C 385

D 386

题解:

767是奇数,所以767 = n0+n2=n0+n0-1

n0=384

4.一棵完全二叉树的节点数为531个,那么这棵树的高度为( )

A 11

B 10

C 8

D 12

题解:根据之前的性质4: 具有n个结点的完全二叉树的深度k为上取整

k= 10

 

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

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

相关文章

IDEA中的Debug功能介绍

说明&#xff1a;本文介绍IDEA中的Debug功能&#xff0c;基于2023.2&#xff08;Ultimate Edition&#xff09;版本 简单介绍 首先&#xff0c;在程序需要停止的所在行号上&#xff0c;鼠标左键&#xff0c;可设置一个断点&#xff0c;是一个红色圆点标志&#xff0c;表示程序…

2024年腾讯云优惠券领取步骤使用教程详解

随着云计算技术的快速发展&#xff0c;越来越多的企业和个人开始选择使用云服务来提升自己的业务能力和工作效率。腾讯云作为国内领先的云服务提供商&#xff0c;其优质的服务和丰富的资源吸引了大量的用户。为了回馈广大用户&#xff0c;腾讯云经常会推出各种优惠活动&#xf…

【b站李同学的Lee】2 Git进阶【gitgithub】入门教程,必学!

课程地址&#xff1a;【【git&github】入门教程&#xff0c;必学&#xff01;】 https://www.bilibili.com/video/BV1cE411G7yc/?share_sourcecopy_web&vd_sourceb1cb921b73fe3808550eaf2224d1c155 目录 2 Git进阶 2.1 分支 2.1.1 分支细分 2.1.2 分支命令 1查看…

LeetCode-热题100:148. 排序链表

题目描述 给你链表的头结点 head &#xff0c;请将其按 升序 排列并返回 排序后的链表 。 示例 1&#xff1a; 输入&#xff1a; head [4,2,1,3] 输出&#xff1a; [1,2,3,4] 示例 2&#xff1a; 输入&#xff1a; head [-1,5,3,4,0] 输出&#xff1a; [-1,0,3,4,5] 示例…

unity学习(83)——细节名称和血条

眼中有细节&#xff0c;学习的过程才能平稳&#xff01; 1.游戏更新时把名字也更新 代码如下&#xff1a; 效果如下&#xff1a; 2.因为是第三人称&#xff0c;从背后看&#xff0c;所以名称应该水平对称&#xff0c;翻转一下&#xff01;rotate y180 游戏内效果如下&#xf…

升级xcode15 报错Error (Xcode): Cycle inside Runner

升级xcode15后报错 Could not build the precompiled application for the device. Error (Xcode): Cycle inside Runner; building could produce unreliable results. This usually can be resolved by moving the shell script phase Thin Binary so that it runs before th…

Python程序设计 列表

教学案例八 列表 1. 计算并显示斐波那契数列 输入n,计算并显示斐波那契数列前n项.一行打印5项&#xff0c;每项显示宽度为6 什么是斐波那契数列 斐波那契数列&#xff08;Fibonacci sequence&#xff09;&#xff0c;又称黄金分割数列、 因数学家莱昂纳多斐波那契&#xff…

FreeRTOS任务切换学习

FreeRTOS任务切换学习 所谓任务切换&#xff0c;就是CPU寄存器的切换。假设当由任务A切换到任务B时&#xff0c;主要分为两步&#xff1a; 1&#xff1a;需暂停任务A的执行&#xff0c;并将此时任务A的寄存器保存到任务堆栈&#xff0c;这个过程叫做保存现场&#xff1b; 2&am…

【无标题】系统思考—心智模式

“直到你使无意识变为有意识&#xff0c;它将指导你的生活并且你会称之为命运。”—卡尔荣格 心智模式深藏于我们内心之中&#xff0c;它潜移默化地影响着我们对世界的理解和判断。往往这些影响是如此隐蔽&#xff0c;以至于我们自己都未必察觉到是什么在驱动我们的选择、决策…

【Entity Framework】聊聊EF中键

【Entity Framework】聊聊EF中键 文章目录 【Entity Framework】聊聊EF中键一、概述二、配置主键2.1 约定配置主键2.2 单个属性配置为实体主键2.3 组合主键 三、主键名称四、键类型和值五、备用键 一、概述 键用作每个实体实例的唯一标识符。EF中的大多数实体都有一个键&#…

VPP 负载均衡测试代码

1. 均衡的测试思想和流程说明。 先说一下理论&#xff0c; 然后后边才知道 代码逻辑。 调试了两天&#xff0c;这个代码终于通了。 由于时间关系&#xff0c; 画了一个粗略的图。另外这个代码只是流程通了&#xff0c;不过要帮助理解负载均衡我认为已经足够了。 下面是windo…

QT Creator概览

&#x1f40c;博主主页&#xff1a;&#x1f40c;​倔强的大蜗牛&#x1f40c;​ &#x1f4da;专栏分类&#xff1a;QT❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 目录 一、Qt Creator 概览 ①&#xff1a;菜单栏 ②&#xff1a;模式选择 ③&#xff1a;构建套件选择器…

【Keil5-Debug和发布版本配置】

Keil5-Debug和发布版本配置 ■ Keil5-Debug和发布版本配置■ 一&#xff1a;sct文件 sct文件配置■ 二&#xff1a;发布版本不需要在 C/C&#xff0c;Asm&#xff0c;Linker&#xff0c;中添加 CMDDEBUG 宏定义。■ 三&#xff1a;Debug版本需要在Linker添加 --pd"-DCMDDE…

【MySQL数据库 | 第二十四篇】Limit语句的性能问题和调优策略

前言&#xff1a; MySQL作为最流行的关系型数据库管理系统之一&#xff0c;被广泛应用于各种规模和类型的应用程序中。其强大的功能和灵活的查询语言使得开发人员能够高效地执行各种数据操作和分析。 然而&#xff0c;在处理大量数据或复杂查询时&#xff0c;一些开发人员可能…

Linux网卡:连接虚拟与现实的桥梁

在介绍Linux网卡之前&#xff0c;让我们先迈入时光机&#x1f570;️&#xff0c;回到1980年代末期&#xff0c;互联网正在逐步从一个科研网络向公众网络转变&#xff0c;Linux——一个自由和开源的操作系统诞生了&#x1f427;。Linux的出现&#xff0c;对于计算机科学领域来说…

非线性滤波相位解缠算法

相位解缠是InSAR数据处理流程中较为关键的步骤&#xff0c;同时也是地表高程模型重建 过程中的主要误差来源之一。迄今为止&#xff0c;针对干涉图的相位解缠问题&#xff0c;已经提出了各 种各样的相位解缠算法&#xff0c;这些算法大致可以分为以下几类&#xff1a;①路径跟踪…

DSP笔记13-时间基准子模块Time base(TB)比较子模块Counter cpmpare(CC)

时间基准子模块Time base(TB) 同步&#xff0c;计数 CTR计数寄存器 PRD周期寄存器 CMP比较寄存器&#xff0c;占空比 EPWMA&#xff0c; EPWMB&#xff0c;两个比较寄存器&#xff0c;但只有以及计数寄存器以及一个周期寄存器 计数模式 计数时钟TBCLK HSPCLKDIVx x0,分…

《QT实用小工具·二十三》 Ntp校时类

1、概述 源码放在文章末尾 该项目实现了 Ntp校时类 &#xff0c;包含如下功能&#xff1a; 可设置Ntp服务器IP地址。 推荐用默认的阿里云时间服务器 ntp1.aliyun.com 收到时间信号发出。 时间精确到秒。 下面是demo演示&#xff1a; 项目部分代码如下&#xff1a; #if…

在线视频下载工具lux(原annie)安装及使用教程

安装教程 下载ffmpeg&#xff0c;参考这篇文章&#xff1a;Python——Windows下载ffmpeg由于博主的系统为windows&#xff0c;所以选择不安装lux&#xff0c;直接下载.exe文件&#xff0c;进入lux的github网站后&#xff0c;选择右侧的Releases&#xff0c;下载下图的windows …

SpringBoot删除菜品模块开发(SpringMVC分割参数、事务管理、异常处理、批量删除)

需求分析与设计 一&#xff1a;产品原型 在菜品列表页面&#xff0c;每个菜品后面对应的操作分别为修改、删除、停售&#xff0c;可通过删除功能完成对菜品及相关的数据进行删除。 删除菜品原型&#xff1a; 业务规则&#xff1a; 可以一次删除一个菜品&#xff0c;也可以批…