Java数据结构与Java算法学习Day05---二叉树(简略笔记记录)

news2024/12/23 9:31:26

目录

一、二叉树 79

1.1树的基本定义79 

1.2数的相关术语 80

1.3二叉树的基本定义 81

1.4二叉查找树的创建 82

1.4.1二叉树查找树创建---插入方法(put) 83

1.4.2二叉树查找树创建---获取方法(get)84

1.4.3二叉树查找树创建---删除方法(delete)85

1.4.4代码的测试 86

1.5二叉查找树其他便捷方法 87

1.5.1查找二叉树中最小的键 87

1.5.2查找二叉树中最大的键 88

1.6二叉树的基础遍历 89

1.6.1二叉树---前序遍历 90

1.6.2二叉树---中序遍历 91

1.6.3二叉树---后序遍历 92

1.7二叉树---层序遍历 93

1.8最大深度问题 94

1.9折纸问题 95


一、二叉树 79

1.1树的基本定义79 

数组:

查询的效率比较快,原因是其地址是连续的,根据索引能够快速的查找到。

增删的效率比较慢,每次的增删需要涉及到大量数据的移动。 

链表:

查询的效率比较慢,是因为需要从头结点开始进行查询。  

增删的效率比较快,不需要大量的数据移动,只需要在插入的结点处断开后,然后进行插入即可。

 树:结合了链表和数组的。

1.2数的相关术语 80

 结点的度: 

叶结点:

 结点的层序编号:

数的度:

注:根结点的度不一定是最大的

孩子结点、双亲结点、兄弟结点:

1.3二叉树的基本定义 81

二叉树就是度不超过2的数(每个结点最多有两个子结点) 

二叉查找树:左子结点小于右子结点。.

堆:左子结点和右子结点之间没有大小区分。

 

 两个特殊的二叉树:

满二叉树:

 每一层的结点的个数都能达到2^(k-1)  k:层数

完全二叉树:

1.4二叉查找树的创建 82

通过键值对的形式 进行查询。

1.4.1二叉树查找树创建---插入方法(put) 83

插入方法put实现思想:

本部分代码在/tree/BinaryTree中。

1.4.2二叉树查找树创建---获取方法(get)84

查询方法get实现思想:

1.4.3二叉树查找树创建---删除方法(delete)85

删除原来的二叉树之后,需要有一个新的再次替换。这个新的替换是谁比较合适呢?

如何确定这个删除后新替换的元素呢?

  找到被删除元素的右子树中最小结点,作为替换位置的结点元素。

1.4.4代码的测试 86

本部分代码在/test/BinaryTreeTest中

1.5二叉查找树其他便捷方法 87

1.5.1查找二叉树中最小的键 87

本部分代码在/test/BinaryTree中。最左端的就是最小的键

1.5.2查找二叉树中最大的键 88

本部分代码在/test/BinaryTree中。最右端的就是最大的键

1.6二叉树的基础遍历 89

二叉树的基本遍历的基本的概念: 

遍历方法转换为:搜索路径问题。

搜索路径有三种:(其中最重要的是中序遍历)

示例:

1.6.1二叉树---前序遍历 90

前序遍历代码:/tree/BinaryTree

测试代码:/test/BinaryTreeErgodicTest

1.6.2二叉树---中序遍历 91

中序遍历代码:/tree/BinaryTree

测试代码:/test/BinaryTreeErgodicTest

1.6.3二叉树---后序遍历 92

后序遍历代码:/tree/BinaryTree

测试代码:/test/BinaryTreeErgodicTest

1.7二叉树---层序遍历 93

层序遍历:是从上到下,然后在每层进行从左到右进行查询,进行队列进入。

层序遍历代码:/tree/BinaryTree

测试代码:/test/BinaryTreeErgodicTest

1.8最大深度问题 94

待看 

1.9折纸问题 95

待看

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

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

相关文章

大数据学习:进程管理(2)

文章目录一、系统资源监控1、free命令2、uname命令3、uptime命令4、netstat命令5、vmstat命令二、任务管理1、前台进程2、后台进程3、操作案例一、系统资源监控 1、free命令 观察内存(memory)使用情况 2、uname命令 查阅系统与核心相关信息 3、up…

JavaEE技术点:MySQL目录及基本命令介绍

1.MySQL目录介绍 (1)首先来看MySQL的安装目录,如图1-1所示: 图1-1 MySQL的安装目录 (2)图1-1中的bin目录中存放的是二进制的可执行文件,如图1-2所示: 图1-2 bin目录结构 (3)图1-2中的mysqld.exe是服务器程序,必须先…

山东:推进自然资源确权登记 助力自然资源保护发展

2019年,自然资源统一确权登记工作启动以来,山东省认真贯彻生态文明思想,坚决扛牢政治责任,按照国家统一部署,担当作为、加压奋进,在探索推进自然资源确权登记法治化、规范化、标准化、信息化等方面取得了积…

用亚马逊自养号进行测评的好处

自养号顾名思义就是自己用真实环境养出来的买家账号。通过真实的邮箱、手机号码和注册地当地真实收货地址,包括IP等等,但是也有很多卖家没有完全认清自养号的好处,下面就看看用亚马逊自养号进行测评的好处 对于卖家来说,使用自养号…

【超全面】机器学习中的超参优化方法总结

目录 1. 什么是超参数 2. 超参数类型 3. 主流超参优化方法 (1)手动调参 缺点: python代码:(例子) 手动调参 参数的重要性顺序 超参具体如何影响模型性能 超参合适的范围 (2)网格搜索 …

Web3中文|马斯克也疯狂?网红AI “ChatGPT”有多火?

一个名为“ChatGPT”的网红AI竟写出了毁灭人类的计划书。 计划书的步骤详细到入侵各国计算机系统、控制武器、破坏通讯、交通系统等等。和电影里的情节一模一样,甚至ChatGPT还给出了相应的Python代码。 诱导ChatGPT写下该计划的是一位名为扎克德纳姆(Z…

使用 Echarts 插件完成中国旅游地图

目录前言:什么是 Echarts 插件具体实现思路中国旅游地图成品展示步骤:完成中国旅游地图代码总结:前言: 大家都知道,一般情况下,想要使用前端设置一个 中国旅游地图 需要使用 canvas 画布进行编写&#xff…

尿苷二磷酸修饰阿拉伯糖,阿拉伯糖偶联核苷酸,UDP-B-L-阿拉伯糖二钠盐,15839-78-8

产品名称:尿苷二磷酸修饰阿拉伯糖,阿拉伯糖偶联核苷酸 英文名称:UDP-b-L-arabinopyranose disodium salt,UDP-L-Arabinose CAS号:15839-78-8 分子式:C14H22N2O16P2 分子量:536.27600 产地&am…

一种基于交叉选择的柯西反向鲸鱼优化算法QOWOA附matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。 🍎个人主页:Matlab科研工作室 🍊个人信条:格物致知。 更多Matlab仿真内容点击👇 智能优化算法 …

研究 | CT图像迭代重建算法研究进展

上次讲到我实现了一下代数迭代重建(ART),到周六开会的时候才大概了解了我的研究方向应该是统计迭代重建,一下子就把我给搞懵了。按照书上的说法,统计迭代法是在发射型CT(SPECT和PET)中应用广泛&…

WMS系统4.0,仓库管理的20年历史变局你知道吗?

20年之前,中国的仓储物流技术还处于起步阶段,很多时候都是从国外企业的经验中摸索出来的,而高端的技术,依然需要国外企业来完成。 20年过去了,中国庞大的应用场景、庞大的产业、庞大的物料、庞大的商业活动推动着中国的…

如何用Zabbix监控温湿度?Zabbix对接modbus tcp设备实操

背景: 1、公司机房没有专用的温度监控设备,以往是通过snmp功能get服务器的CPU或是主板温度,根据偏差值算出机房的大致温度(温度计值与服务器的差值),可最近研发部门经常在服务器跑高负载任务,导致计算出的环境温度极度…

实验7 数据库编程

第1关 定义一个名为PROC_COUNT的无参数存储过程 任务描述 定义一个名为PROC_COUNT的无参数存储过程,查询工程名称中含有“厂”字的工程数量,并调用该存储过程。 相关知识 1、工程项目表J由工程项目代码(JNO)、工程项目名(JNAME)、工程项目所在城市(CITY)…

计算机网络-网络层:IP协议

目录 一、IP协议格式 二、IP地址管理 1.动态地址分配&组建私网 1.1 动态地址分配DHCP 1.2 NAT技术组建私网 2. 早期网络划分方式 3. 当前网络划分方式CIDR方案 4. 特殊IP地址 5. 公网与私网(外网与内网) 6. 路由选择 网络层:负…

JavaScript Date对象中的常用方法有哪些?

JavaScript中的日期对象用来处理日期和时间。例如,秒杀活动中日期的实时显示、时钟效果、在线日历等。下面将对日期对象进行详细讲解。 日期对象的使用 JavaScript中的日期对象需要使用new Date()实例化对象才能使用,Date()是日期对象的构造函数。在创…

服务访问质量(QoS)介绍与技术 一

个人简介:云计算网络运维专业人员,了解运维知识,掌握TCP/IP协议,每天分享网络运维知识与技能。个人爱好: 编程,打篮球,计算机知识个人名言:海不辞水,故能成其大;山不辞石…

【LeetCode每日一题】——1290.二进制链表转整数

文章目录一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目示例】六【解题思路】七【题目提示】八【时间频度】九【代码实现】十【提交结果】一【题目类别】 链表 二【题目难度】 简单 三【题目编号】 1290.二进制链表转整数 四【题目描述】 给你一个单…

Python时间模块之time模块

在项目开发中做功能经常会用到关于时间的操作。比如会员过期的定时任务,一些代码的延迟执行。今天介绍时间模块中的time模块。 目录 1.表示时间的方式: 2.格式化时间中字符的含义: 3.函数转换关系 4.函数介绍及应用 time() localtime() …

10Gb每秒!SM4的单核“心”!海泰携手海量数据安全“闪”护

引言 密码技术是保护网络与信息系统安全的核心技术,已经广泛应用到金融、能源、通信、交通、水利等各行各业,为国家安全和经济发展发挥重要作用。商用密码应用安全性评估(简称密评),是指在釆用商用密码技术、产品和服务…

[附源码]计算机毕业设计汽车租赁管理系统Springboot程序

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…