数据结构~二叉树(基础知识)

上一篇博客我们对树有了初步了解与学习,这篇我将初步学习二叉树!!(新年快乐!)

目录

二叉树  

1、定义:

2、特点:

3、基本形态:

4、二叉树的种类:

(1)满二叉树

(2)完全二叉树 (效率高)

(3)斜树

5、二叉树的性质:

 6、二叉树的存储:


二叉树  

1、定义:

二叉树是每个节点最多有两个子树的树结构。二叉树是n(n>=0)个结点的有限集合,该集合或者为空集(称为空二叉树),或者由一个根结点和两棵互不相交的、分别称为根结点的左子树和右子树的二叉树组成。

2、特点:

(1)每个结点最多有两棵子树(二叉树不存咋大于2的结点)。

(2)二叉树的子树有左右顺序之分,其子树的次序不能颠倒

(3)即使树中的某结点只有一棵子树,也要区分它是左子树还是右子树。

3、基本形态:

(1)空二叉树;

(2)只有一个根结点;

(3)根结点只有左子树;

(4)根结点只有右子树;

(5)根结点既有左子树又有右子树。

4、二叉树的种类:

(1)满二叉树

定义:一个二叉树每个层的结点数都达到了最大值。

【即如果一个二叉树的层数为n,则结点总数是(2^k)-1】

满二叉树是一种特殊的完全二叉树!!

特点:

a.叶子只能出现在最下一层。出现在其他层就不可能达到平衡。

b.非叶子结点的度一定为2。

c.在同样深度的二叉树中,满二叉树的结点个数最多,叶子树最多。

(2)完全二叉树 (效率高)

定义:一棵深度为k的有n个结点的二叉树,对树中的结点按从上至下、从左到右的顺序进行编号,如果编号为i(1≤i≤n)的结点与满二叉树中编号为i的结点在二叉树中的位置相同,则这棵二叉树称为完全二叉树。

特点:

a.叶子结点只能出现在最下两层。

b.最下层的叶子一定集中在左部连续位置。

c.倒数第二层,如果有叶子结点,一定都在右部连续位置。

d.如果结点度为1,则该结点只有左孩子,即不存在只有右子树的情况。

e.同样结点数的二叉树,完全二叉树的深度最小。

(3)斜树

向哪边斜就叫啥斜树!!

左斜树:所有的结点都只有左子树的二叉树。

右斜树:所有的结点都只有右子树的二叉树。

5、二叉树的性质:

(1)

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

(2)

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

(3)

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

(4)

具有n个结点的完全二叉树的深度k为[log2n]+1上取整。([x]表示不大于x的最大整数)

(5)

对于具有n个结点的完全二叉树,如果按照从上至下从左至右的顺序对所有结点从0开始编号,对于序号为i的结点有:
若i>0,双亲序号:(i-1)/2; i=0,i为根结点编号, 无双亲结点。
若2i+1<n,左孩子序号:2i+1,否则无左孩子。
若2i+2<n,右孩子序号:2i+2,否则无右孩子。

 6、二叉树的存储:

二叉树的存储结构分为顺序存储和类似于链表的链式存储

链式存储:

//孩子表示法class Node6 
{int val;     //数据域Node6 left;  //左孩子的引用,常常代表左孩子为根的整棵左子树Node6 right; //右孩子的引用,常常代表右孩子为根的整棵右子树
}//孩子双亲表示法public class Node7 {int val;      //数据域Node7 left;   //左孩子的引用,常常代表左孩子为根的整棵左子树Node7 right;  //右孩子的引用,常常代表右孩子为根的整棵右子树Node7 parent; //当前结点的根结点
}

今天的学习就到这了,下篇博客咱继续!!

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

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

相关文章

数据库系统概论整理与总结

数据库系统概论 第一章&#xff1a;绪论 四个基本概念 四个概念 数据&#xff1a;Data 数据库&#xff1a;DataBase 数据库管理系统:DBMS 数据库系统:DBS 打个比喻&#xff0c;比如说菜鸟物流&#xff1a; Data&#xff1a;快递 DB&#xff1a;物流厂库 DBMS&#xff1a;对…

C# 如何实现一个事件总线

EventBus&#xff08;事件总线&#xff09;是一种用于在应用程序内部或跨应用程序组件之间进行事件通信的机制。 它允许不同的组件通过发布和订阅事件来进行解耦和通信。在给定的代码片段中&#xff0c;我们可以看到一个使用C#实现的Event Bus。它定义了一些接口和类来实现事件…

上位机图像处理和嵌入式模块部署(cmake的使用)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 过去我们编写windows程序的时候&#xff0c;习惯上都是直接使用visual studio创建工程开发。而开发linux程序的时候&#xff0c;则是编写好c、cpp代…

MySQL 基础知识(九)之视图

目录 1 视图的介绍 2 视图算法 3 创建视图 4 查看视图结构 5 修改视图 6 删除视图 7 参考文档 1 视图的介绍 视图是一张并不存储数据的虚拟表&#xff0c;其本质是根据 SQL 语句动态查询数据库中的数据。数据库中只存放了视图的定义&#xff0c;通过 SQL 语句使用视图时…

去掉图片水印但是不伤原图?看完这些方法就知道了

小伙伴们&#xff0c;你们是不是经常在网上找一些好看的图片作为壁纸呢&#xff1f;有时候会遇到一些带着平台水印的图片&#xff0c;是不是觉得不太美观呢&#xff1f;别着急&#xff0c;其实我们可以使用一些去水印软件来将这些水印去除掉&#xff0c;让图片更加美观。那么&a…

Graph + LLM图数据库技术如何助力行业大语言模型应用落地

随着 AI 人工智能技术的迅猛发展和自然语言处理领域的研究日益深入&#xff0c;如何构建强大的大语言模型对于企业来说愈发重要&#xff0c;尤其是在特定行业领域中。 图数据库作为处理复杂数据结构的有力工具&#xff0c;为企业构建行业大语言模型提供了强大的支持。本文将探…

腾讯云4核8G服务器配置性能测评,2024更新

4核8G服务器支持多少人同时在线访问&#xff1f;阿腾云的4核8G服务器可以支持20个访客同时访问&#xff0c;关于4核8G服务器承载量并发数qps计算测评&#xff0c;云服务器上运行程序效率不同支持人数在线人数不同&#xff0c;公网带宽也是影响4核8G服务器并发数的一大因素&…

扫描电子显微镜(SEM)样品制备要求与方法解析

扫描电子显微镜&#xff08;Scanning Electron Microscope&#xff0c;简称SEM&#xff09;是一种强大的分析工具&#xff0c;广泛应用于材料科学、生物学、医学、半导体材料和化学化工等领域。SEM能够提供高分辨率的表面形貌图像&#xff0c;因此样品制备成为获取准确、清晰图…

Python第十七章(继承)

继承&#xff1a;子类继承父类的所有方法和属性 一。单继承&#xff1a;一个子类继承一个父类 注释&#xff1a;B是子类&#xff0c;继承了A的函数方法&#xff0c;当调用B时候&#xff0c;会同时使用A中的全部方法&#xff0c;object类是顶级类或者基类&#xff0c;其他子类叫…

IP定位技术助力网络安全保护

随着网络技术的不断发展&#xff0c;网络安全问题日益凸显&#xff0c;如何有效保护网络安全已成为亟待解决的问题。IP定位技术作为一种前沿的网络安全防护手段&#xff0c;正在逐步成为网络安全保护的重要工具。 首先&#xff0c;我们要明确什么是IP定位技术。IP定位技术是一…

express如何挂载前端项目

如何在express的web服务器中放置前端项目呢&#xff1f; 或者说express如何挂载前端打包后的dist目录&#xff1f; 三个步骤&#xff1a; ①导入path const path require(path);②静态托管当前目录 app.use(express.static(path.join(__dirname, dist)));目的是访问到dist目…

ES6的重要特性

1. 块级作⽤域&#xff1a;引⼊ let 和 const 关键字&#xff0c;允许在块级作⽤域中声明变量&#xff0c;解决了变量提升和作⽤域污染的问题。 2. 箭头函数&#xff1a;使⽤箭头( > )定义函数&#xff0c;简化了函数的书写&#xff0c;并且⾃动绑定了 this 。 3. 模板字…

6.s081 学习实验记录(七)Multithreading

文章目录 一、Uthread: switching between threads简介提示实验代码实验结果 二、Using threads简介实验代码 三、Barrier简介实验代码实验结果 一、Uthread: switching between threads 简介 切换到 thread 分支 git fetchgit checkout threadmake clean 实现用户态线程的…

从Unity到Three.js(动态创建mesh)

js var let const基础 手动创建模型mesh功能测试&#xff0c;此功能跑通就可以实现很多功能了&#xff0c;如点云转mesh&#xff0c;磨碎效果等等。 import * as THREE from three;const scene new THREE.Scene(); const camera new THREE.PerspectiveCamera(60, window.in…

Python学习路线图

防止忘记&#xff0c;温故知新 进阶路线

使用手持激光三维扫描仪进行建筑立面测量需要注意些什么?

在进行采集作业前&#xff0c;首先需对作业区域进行实地勘察。对于某些有设计感、结构较为特殊的建筑物&#xff0c;若不提前对作业区域勘探&#xff0c;直接进行采集工作&#xff0c;往往会漏掉建筑物的某些结构特征&#xff0c;造成返工。对于建筑物结构相对简单的场景&#…

LLM(2)之指令提示词(Prompt)基础教学

LLM(2)之指令提示词 Author&#xff1a;Once Day Date&#xff1a;2024年2月15日 全系列专栏请查看:LLM实践成长_Once_day的博客-CSDN博客 参考文章&#xff1a; 中文完整版全9集ChatGPT提示工程师&#xff5c;AI大神吴恩达教你写提示词ChatGPT Shortcut - 简单易用的 Chat…

WordPress主题YIA移动端文章页的面包屑不显示怎么办?

平时我们一般都会在文章页导航菜单下方显示面包屑&#xff0c;类似于“当前位置&#xff1a;boke112百科 WordPress 正文”。平时用浏览器调试站点的时候&#xff0c;在Edge浏览器的“切换设备仿真”中&#xff0c;不管是选择什么设备都会显示面包屑。具体如下图所示&#xf…

数据库数据加密的 4 种常见思路的对比

应用层加解密方案数据库前置处理方案磁盘存取环节&#xff1a;透明数据加密DB 后置处理 最近由于工作需要&#xff0c;我对欧洲的通用数据保护条例做了调研和学习&#xff0c;其中有非常重要的一点&#xff0c;也是常识性的一条&#xff0c;就是需要对用户的个人隐私数据做好加…

【Java程序设计】【C00252】基于Springboot的实习管理系统(有论文)

基于Springboot的实习管理系统&#xff08;有论文&#xff09; 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于Springboot的实习管理系统 本系统分为前台功能模块、管理员功能模块、教师功能模块、学生功能模块以及实习单位功能模块。 前台功能模块&#xf…