树和二叉树(概念及其结构)

news2024/11/20 2:33:37

1.树概念及结构(了解)‘

1.1树的概念

树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它

叫做树是因为它看起来像一颗倒挂的树,也就是说它是根朝上,而叶朝下的。

*有一个特殊的节点叫做根节点,根节点没有前驱节点

*除根节点外,其余节点被分成不相交的集合,其中每一个集合称为子树。每颗子树的根节点都有一颗前驱,可以有0个或多个后继

*因此,树是递归定义的。

如图:根没有前驱,根的后继为子节点,字节的左右相邻在一个深度的为兄弟节点,子节点a的后继为这个子节点a的子节点b(孩子),此时子节点a称为子节点b的根

 

 

节点的度:一个节点含有的子树的个数称为该节点的度;如上图A的度为6

叶节点或终端节点:度为0的节点称为叶节点;如上图B,C,H,I,K,L…等(也可理解为没有子节点(孩子)的节点)

非终端节点或分支节点:度不为0的节点;如上图D,E,F…等节点为分支节点

双亲节点或父亲节点:若一个节点含有子节点,则这个节点为其子节点的双亲节点;如上图A为B的双亲节点。

孩子节点或子节点:一个节点含有的子树的根节点(即双亲节点)称为该节点的子节点; 如上图:B是A的孩子节点

兄弟节点:具有相同父节点的节点互称为兄弟节点; 如上图:B、C是兄弟节点

树的度:一棵树中,最大的节点的度称为树的度; 如上图:树的度为6

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

树的高度或深度:树中节点的最大层次; 如上图:树的高度为4

节点的祖先:从根到该节点所经分支上的所有节点;如上图:A是所有节点的祖先

子孙:祖先的所有子节点及其子节点的子节点等都为子孙。

1.2树的表示

树结构相对线性表就比较复杂了,要存储表示起来就比较麻烦了,实际中树有很多种表示方式, 如:双亲表示法,孩子表示法、孩子兄弟表示法等等。我们这里就简单的了解其中最常用的孩子兄弟表示法。

 

双亲表示法:

 二叉树的概念及结构

2.1概念 一棵二叉树是结点的一个有限集合,该集合或者为空,或者是由一个根节点加上两棵别称为左子树和右子树的二叉树组成。

二叉树的特点:

1. 每个结点最多有两棵子树,即二叉树不存在度大于2的结点。

2. 二叉树的子树有左右之分,其子树的次序不能颠倒。

 2.3数据结构中的二叉树

 2.4特殊的二叉树:

 1. 满二叉树:一个二叉树,如果每一个层的结点数都达到最大值,则这个二叉树就是满二叉 树。也就是说,如果一个二叉树的层数为K,且结点总数是(2^k) -1 ,则它就是满二叉树。(除最后一层外,所有的节点都连着两个子节点)

满二叉树也是特殊的完全二叉树

2. 完全二叉树:完全二叉树是效率很高的数据结构,完全二叉树是由满二叉树而引出来的。对 于深度为K的,有n个结点的二叉树,当且仅当其每一个结点都与深度为K的满二叉树中编号 从1至n的结点一一对应时称之为完全二叉树。 要注意的是满二叉树是一种特殊的完全二叉树。(出最后一层外所有节点都连着两个子节点,且最后一层的节点是连续的(如图中最后一层有三个连续的)),完全二叉树最后一层最少含有一个节点。

 

 

2.5 二叉树的存储结构

二叉树一般可以使用两种结构存储,一种顺序结构,一种链式结构。

二叉树的性质:

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

(第一层为祖宗节点,最多只有一个节点为2(^1-1)=0个节点,最多第二层2^(2-1)=2个节点一次类推)

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

(每层最多可有节点个数的计算)

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

(当作规律记住,如上图完全二叉树:n0=5,n2=4)

4. 若规定根节点的层数为1,具有n个结点的满二叉树的深度,h=Log(N+1)

假设一个满二叉树的高度为h

总节点的个数:

2^0+2^1+2^2+2^3+…+2^(h-1)=N

Sn=(2^h) -1=N

h=log 2 (N+1)

相关的选择题:

 讲解:

1:n2=199,n0=n2+1=200

2:假设度为0的x0     x1+x2+x0=2n

     假设度为1的x1     x2+1=x0

    假设度为2的x2      所以2x0+x1-1=2n

   又因为为完全二叉树,这里x1可能为1,可能为0,当为1时恰好x0=n,(因为节点都为整数)

3.假设这颗树的高度为h,假设最后一层缺少了x个节点

有题目(完全二叉树,最后一层不满)可以推出 (2^h)-1-x=531

由完全二叉树推出 x的取值范围[0,2^(h-1)-1]

再利用题目的选项代入:2^11=2048(数值过大不对)

                                        2^10=1024(531在范围内符合)

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

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

相关文章

php+vue+mysql校园大学生兼职信息网站系统

商家功能模块 商家通过点击后台管理,进入页面可以进行首页、个人中心、热门兼职管理、兼职接单管理、学生咨询管理、兼职任务管理、完成评价管理等功能模块,进行相对应操作 兼职接单管理:通过兼职接单管理可以进行获取兼职名称、专业、分类、…

佳电股份:智能互联 绿色驱动 拥抱未来

4月 13—15 日,2023年易派客工业品展览会、石油石化工业展览会、第七届中国石油和化工行业采购年会,在苏州国际博览中心举行。在本次展会上,佳电股份展出了超高速永磁电机、超高效高压三相异步电动机、智慧电机以及配套服务等主要产品。 哈尔…

linux 下 mysql 平滑升级,不暴力

只适合版本跨越较小的,如果从5到8这种不支持 查看当前版本5.6.40,升级到5.6.50(因为一些漏洞的原因) 1:下载需要升级的版本 2:解压 3:停止当前的mysql服务 service mysql stop 4:备份原先系…

Spring Boot的基础使用和< artifactId>spring-boot-maven-plugin</ artifactId>爆红的处理

Spring Boot的基础使用和< artifactId>spring-boot-maven-plugin</ artifactId>爆红的处理 Spring Boot概述 微服务概述 微服务Microservices是一种软件架构风格&#xff0c;他是以专注于单一责任与功能的小型功能区块Small Building Blocks 为基础&#xff0c;…

FL Studio21安装体验试用下载fl水果支持最新中文语言功能

FL Studio是什么&#xff1f;如果你打算将来朝着艺术和音乐方向发展&#xff0c;那么学习音乐理论和音乐制作就是一门基础了。FL Studio 21还提供了几十个内置的音乐和声音样本库&#xff0c;以及多种音频效果处理器和虚拟乐器&#xff0c;包括合成器、鼓机、效果器等。这些插件…

【C++初阶】:类与对象(上)

类与对象 一.面向对象的初步认识二.初步认识类三.类的权限四.类的声明和定义五.封装六.类的实例化七.类的大小 一.面向对象的初步认识 C语言是面向过程的&#xff0c;关注的是过程&#xff0c;分析出求解问题的步骤&#xff0c;通过函数调用逐步解决问题。 例如洗衣服 而C是基于…

GFD233A 3BHE022294R0103

GFD233A 3BHE022294R0103 ABB KUC321AE PLC模块 HIEE300698R0001 KU C321 AE01 ABB KUC711 3BHB004661R0001 高压变频模块 KUC711AE ABB KUC755AE105 3BHB005243R0105 驱动控制系统模块 KUC755 ABB KUC755AE106 3BH005243R006 控制系统模块 KU C755 AE 106 ABB LDGRB-01 3BSE01…

react-10 函数式写法rsf,配合HOOKS钩子函数

函数式跨组件通信&#xff1a; useContext 实现跨组件传值&#xff0c;内层组件获取context中的值 用来解决同一个父组件的后代组件之间的数据共享问题, 同一个父组件的所有后代组件都可以用 useContext() 从最近的 context 中获取. 性能优化&#xff1a;useMemo &#xff1a…

cv2 五边形矫正,python ,多边形透视变换

#图像透视变换--矫正 #根据最大的5边形进行透视变换 #获取最大和最次长 周长对应的轮廓 #该轮廓进行5边形拟合逼近 #进行透视变换&#xff1a;应用两线交点 import numpy as np import cv2#大津阈值法 OSTU def myApprox(con,pointnum5):# con为预先得到的最大轮廓num 0.001…

2023年CDGA/CDGP数据治理工程师认证报名需要什么条件?

DAMA认证为数据管理专业人士提供职业目标晋升规划&#xff0c;彰显了职业发展里程碑及发展阶梯定义&#xff0c;帮助数据管理从业人士获得企业数字化转型战略下的必备职业能力&#xff0c;促进开展工作实践应用及实际问题解决&#xff0c;形成企业所需的新数字经济下的核心职业…

mybatis01-Lombok、mybatis原理、参数处理、模糊查询、结果封装

mybatis01 Lombok 一、Lombok的使用 Lombok 是一个Java库&#xff0c;能自动插入编辑器并构建工具&#xff0c;简化Java开发。通过加注解的方式&#xff0c;不需要为类编写getter、setter、constructor或equals&#xff0c;同时可以自动化日志变量。 第一步、在pom.xml中加…

基于动态车辆模型的百度Apollo LQR和MPC横向控制算法分析(Matlab代码实现)

目录 &#x1f4a5;1 概述 &#x1f4da;2 运行结果 &#x1f389;3 参考文献 &#x1f468;‍&#x1f4bb;4 Matlab代码 &#x1f4a5;1 概述 Apollo 是由百度发起的一个高效、灵活的基于自动驾驶的测试和研发的平台。Apollo 的主要逻辑为局部规划 轨道跟踪。在局部规划…

4.1 插值概念与基础理论

学习目标&#xff1a; 学习插值的基础理论可以从以下几个方面入手&#xff1a; 理解插值的概念&#xff1a;插值是指根据已知数据点的函数值&#xff0c;构造出经过这些点的函数&#xff0c;用于在已知数据点之间估计函数值。可以将其看做是一种函数逼近的方法。 掌握插值多项…

【Linux】MySQL高可用之Mysql读写分离实践

一、MySQL读写分离原理 读写分离就是在主服务器上修改&#xff0c;数据会同步到从服务器&#xff0c;从服务器只能提供读取数据&#xff0c;不能写入&#xff0c;实现备份的同时也实现了数据库性能的优化&#xff0c;以及提升了服务器安全。 二、读写分离实践 绝大多数的企业的…

居家办公远程控制电脑怎么操作

居家办公或者混合办公&#xff0c;正成为一种新的流行趋势。如何更好地居家办公&#xff0c;实现更高的工作效率和更舒适办公体验&#xff0c;我们总结出如下建议。 无论您是每周远程工作几天还是全职工作&#xff0c;无论是出于选择还是因为健康状况或天气事件&#xff0c;都…

部署YUM仓库及NFS共享服务

一、YUM仓库服务 1&#xff09;YUM概述 YUM&#xff08;Yellow dog Updater Modified&#xff09; 基于RPM包构建的软件更新机制 可以自动解决依赖关系 所有软件包由集中的YUM软件仓库提供 linux本身就是以系统简洁为自身优势&#xff0c;所以在安装操作系统的时候并没有将…

Kaggle往期赛 | 多目标推荐系统大赛baseline

来源&#xff1a;深度之眼 作者&#xff1a;比赛教研部 编辑&#xff1a;学姐 Kaggle OTTO – Multi-Objective Recommender System多目标推荐系统大赛 赛题分析baseline 1、赛题链接 https://www.kaggle.com/competitions/otto-recommender-system/overview 2、赛题描述 本…

聚观早报 |字节与Meta争夺VR开发者;苹果设备无故要求输入ID密码

今日要闻&#xff1a;字节与Meta争夺VR应用开发者&#xff1b;苹果设备无故要求输入ID密码&#xff1b;余承东称25年是智能电动汽车分水岭&#xff1b;小鹏回应G6售价及配置信息曝光&#xff1b;亚马逊将在爱尔兰裁员200人 字节与Meta争夺VR应用开发者 4 月 14 日消息&#xf…

运筹说 第89期|网络计划-网络计划的优化

通过画网络图并计算时间参数&#xff0c;我们已得到了一个初步的网络计划&#xff0c;而网络计划技术的核心却在于从工期、成本、资源等方面对这个初步方案做进一步的改善和调整&#xff0c;以求得最佳效果&#xff0c;这一过程&#xff0c;就是网络计划的优化。接下来让我们跟…

家用洗地机到底好不好用?国产性价比高的品牌

洗地机作为一种高效、节能、环保、卫生的清洁设备&#xff0c;不仅能够提升清洁效率&#xff0c;还能有效减少清洁成本&#xff0c;更重要的是&#xff0c;它可以帮助我们创造一个更加健康和舒适的生活环境。而且除菌方面大部分都是采用电解水的除菌方式&#xff0c;更加环保和…