代码随想录算法训练营第14天 part01 | 二叉树理论基础篇
代码随想录
二叉树理论基础篇
二叉树的种类
二叉树有两种主要的形式:满二叉树和完全二叉树
满二叉树:如果一棵二叉树只有度为0的结点和度为2的结点,并且度为0的结点在同一层上,则这棵二叉树为满二叉树。

这棵二叉树为满二叉树,也可以说深度为k,有2^k-1个节点的二叉树。
完全二叉树
在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层(h从1开始),则该层包含 1~ 2^(h-1) 个节点。

优先级队列其实是一个堆,堆就是一棵完全二叉树,同时保证父子节点的顺序关系。
二叉搜索树
二叉搜索树是有数值的了,二叉搜索树是一个有序树。
若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值;
若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值;
它的左、右子树也分别为二叉排序树
平衡二叉搜索树
平衡二叉搜索树:又被称为AVL(Adelson-Velsky and Landis)树,且具有以下性质:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。

C++中map、set、multimap,multiset的底层实现都是平衡二叉搜索树,所以map、set的增删操作时间时间复杂度是logn,注意我这里没有说unordered_map、unordered_set,unordered_map、unordered_set底层实现是哈希表。
二叉树的存储
二叉树可以链式存储,也可以顺序存储。
那么链式存储方式就用指针, 顺序存储的方式就是用数组。

顺序存储的方式如图:

用数组来存储二叉树如何遍历的呢?
如果父节点的数组下标是 i,那么它的左孩子就是 i * 2 + 1,右孩子就是 i * 2 + 2。
二叉树的遍历
二叉树主要有两种遍历方式:
- 深度优先遍历:先往深走,遇到叶子节点再往回走。
- 广度优先遍历:一层一层的去遍历。
深度优先遍历
1、前序遍历(递归法,迭代法)2、中序遍历(递归法,迭代法)3、后序遍历(递归法,迭代法)
广度优先遍历
层次遍历(迭代法)
这里前中后,其实指的就是中间节点的遍历顺序
前序遍历:中左右
中序遍历:左中右
后序遍历:左右中

最后再说一说二叉树中深度优先和广度优先遍历实现方式,我们做二叉树相关题目,经常会使用递归的方式来实现深度优先遍历,也就是实现前中后序遍历,使用递归是比较方便的。
之前我们讲栈与队列的时候,就说过栈其实就是递归的一种实现结构,也就说前中后序遍历的逻辑其实都是可以借助栈使用递归的方式来实现的。
而广度优先遍历的实现一般使用队列来实现,这也是队列先进先出的特点所决定的,因为需要先进先出的结构,才能一层一层的来遍历二叉树。
在现场面试的时候 面试官可能要求手写代码,所以数据结构的定义以及简单逻辑的代码一定要锻炼白纸写出来。
public class TreeNode {int val;TreeNode left;TreeNode right;TreeNode() {}TreeNode(int val) { this.val = val; }TreeNode(int val, TreeNode left, TreeNode right) {this.val = val;this.left = left;this.right = right;}
}
相关文章:
代码随想录算法训练营第14天 part01 | 二叉树理论基础篇
代码随想录 二叉树理论基础篇 二叉树的种类 二叉树有两种主要的形式:满二叉树和完全二叉树 满二叉树:如果一棵二叉树只有度为0的结点和度为2的结点,并且度为0的结点在同一层上,则这棵二叉树为满二叉树。 这棵二叉树为满二叉树…...
async与defer的区别
原文解释 async vs defer attributes - Growing with the Web...
奇数乘积(C语言)
一、运行结果; 二、源代码; # define _CRT_SECURE_NO_WARNINGS # include <stdio.h>int main() {//初始化变量值;int i 1;int j 3;//循环运算;while (j < 12){//运算;i i * j;//改变数值;j 2…...
中文分词库:jieba的词性对照表
jieba词性对照表 字母词性a形容词ad副形词ag形容词性语素an名形词b区别词c连词d副词dg副词素e叹词f方位词g语素h前接成分i成语j简称略称k后接成分l习用语m数词mq数量词n名词ng名词性语素nr人名ns地名nt机构团体名nz其他专名o拟声词p介词q量词r代词rg代词性语素rr人称代词rz指示…...
Linux:git的基础操作
git的下载 版本控制系统一般分为两种,集中式版本控制系统,分布式版本控制系统 什么是集中式版本控制系统:版本库集中存放在中央服务器,工作时候使用自己的电脑,当工作时候在中央服务器上拉取最新版本的代码,…...
【华为OD机试】CPU 算力分配【C卷|100分】
【华为OD机试】-真题 !!点这里!! 【华为OD机试】真题考点分类 !!点这里 !! 题目描述 现有两组服务器A和B,每组有多个算力不同的CPU,其中 A[i] 是 A 组第 i 个CPU的运算能力, B[i] 是 B组 第 i 个CPU的运算能力。 一组服务器的总算力是各CPU的算力之和。 为了让两组服务器…...
挑战杯 机器视觉目标检测 - opencv 深度学习
文章目录 0 前言2 目标检测概念3 目标分类、定位、检测示例4 传统目标检测5 两类目标检测算法5.1 相关研究5.1.1 选择性搜索5.1.2 OverFeat 5.2 基于区域提名的方法5.2.1 R-CNN5.2.2 SPP-net5.2.3 Fast R-CNN 5.3 端到端的方法YOLOSSD 6 人体检测结果7 最后 0 前言 ǵ…...
基于Spring Boot的社区便民服务管理系统的设计与实现
摘 要 二十一世纪我们的社会进入了信息时代,信息管理系统的建立,大大提高了人们信息化水平。传统的管理方式对时间、地点的限制太多,而在线管理系统刚好能满足这些需求,在线管理系统突破了传统管理方式的局限性。于是本文针对这一…...
亚信安慧AntDB:数字化创新背后的数据力量
亚信安慧AntDB的“融合实时”的特性,不仅使得数据库具备了更强大的适应性,更让企业在不同业务场景下能够更好地实现业务目标,释放出更大的商业价值。融合实时的特性让AntDB具有了高度灵活性和实时性,使其能够满足企业在不同业务需…...
Matplotlib数据可视化实战-1数据可视化Matplotlib基础
1.1绘图的一般过程: 1.导入相关库 2.生成、读入或计算得到数据; 3.根据需要绘制折线图、散点图、柱状图、饼状图、雷达图、箱线图、三维曲线/曲面以及极坐标系图形; 4.根据需要设置图形属性; 5.显示或保存绘图结果。 例如&…...
信也科技发布消费者权益保护2023年度报告: 科技驱动、服务为先、合作共建社会化消保体系
3月15日消费者权益日当天,信也科技发布《消费者权益保护2023年度报告》(下称《报告》,消费者权益保护简称“消保”)。该报告为信也科技消保委员会成立后首份公开披露的消保工作年度总结。《报告》显示,信也科技通过智能…...
REDHAWK——连接(续)
文章目录 前言一、突发 IO1、数据传输①、输入②、输出 2、突发信号相关信息 (SRI)3、多输出端口4、使用复数数据①、在 C 中转换复数数据 5、时间戳6、端口统计①、C 二、消息传递1、消息生产者①、创建一个消息生产者②、发送消息 2、消息消费者①、创建消息消费者②、注册接…...
9.Python从入门到精通—Python 字符串格式化,三引号,Unicode 字符串
9.Python从入门到精通—Python 字符串格式化,三引号,Unicode 字符串 Python 字符串格式化Python 三引号Unicode 字符串创建 Unicode 字符串Python 的字符串内建函数 Python 字符串格式化 Python中的字符串格式化是指将一个字符串中的占位符替换为指定的值。Python中有多种字符串…...
O2OA(翱途)开发平台系统安全-用户登录IP限制
O2OA(翱途)开发平台[下称O2OA开发平台或者O2OA]支持对指定的用户设置可以连接的客户端计算机的IP地址,以避免用户在不安全的环境下访问系统。本篇主要介绍如何开启O2OA用户登录IP限制。 一、先决条件: 1、O2Server服务器正常运行,系统安装部…...
DirectShowPlayerService::doSetUrlSource: Unresolved error code 0x800c000d
报出这个问题,应该是对给的url解析不正确,我给的是rtsp的视频流地址,应该是对该格式解析异常。 所以参考两篇文: QT无法播放视频:报错:DirectShowPlayerService::doRender: Unresolved error code 0x8004…...
【测试流程及规范】8000字超详细完整版
前言: 首先注明该文由本人原创,转载时需注明出处;团队背景:测试团队加上我一共5名,Java开发10多位,前端3位,产品4位,还有架构工程师、运维等;公司IT团队开发的系统仅供内…...
第十四届蓝桥杯省赛真题 Java C 组【原卷】
文章目录 发现宝藏【考生须知】试题 A \mathrm{A} A : 求和试题 B: 分糖果试题 C: 三国游戏试题 D : \mathrm{D}: D: 平均试题 E \mathrm{E} E : 填充试题 F : \mathrm{F}: F: 棋盘试题 G: 子矩阵试题 H: 公因数匹配试题 I: 异或和之差试题 J : \mathrm{J}: J: 太阳 发现宝…...
v-model 粗略解析
v-model 粗略解析 v-model是什么? 双向数据绑定,可以从data流向页面,也可以从页面流向data通常用于表单收集,v-model 默认绑定 value 值书写形式: v-model:value"" 或 v-model v-model原理是什么…...
【vue elementUI】修改el-dropdown样式
实现效果如下: 代码如下: <el-dropdown trigger"click" command"handleCommand" active-text-color"#606266"><span class"product-card">{{getCategoryName(categoryId)}}</span><el-dro…...
6语言交易所/多语言交易所php源码/微盘PHP源码
6语言交易所PHP源码,简单测试了一下,功能基本都是正常的。 由于是在本地测试的运行环境的问题,K线接口有点问题,应该在正式环境下是OK的。 源码下载地址:6语言交易所/多语言交易所php源码/微盘PHP源码.zip 程序截图…...
DeepSeek长上下文延迟飙升预警:GPU显存碎片率>68%时的实时context重分片算法(已集成至v3.2.1热补丁)
更多请点击: https://codechina.net 第一章:DeepSeek长上下文处理 DeepSeek系列模型(如DeepSeek-V2、DeepSeek-Coder、DeepSeek-MoE)原生支持长达128K tokens的上下文窗口,显著超越传统Transformer架构在长文本建模中…...
Adobe-GenP 3.0终极指南:5分钟掌握Adobe全系列软件激活技巧
Adobe-GenP 3.0终极指南:5分钟掌握Adobe全系列软件激活技巧 【免费下载链接】Adobe-GenP Adobe CC 2019/2020/2021/2022/2023 GenP Universal Patch 3.0 项目地址: https://gitcode.com/gh_mirrors/ad/Adobe-GenP Adobe-GenP 3.0是一款功能强大的Adobe Creat…...
AI-7D-SATS 平台的施工蓝图:为什么企业级 Agent(智能任务角色)应用不能边试边搭?
企业级 Agent(智能任务角色)应用不是把模型接进系统就结束。它更像一项工程建设:先画清蓝图,再决定哪里用智能,哪里靠流程,哪里必须留给人确认。一、为什么企业级 Agent 不能边试边搭 很多团队第一次做 Age…...
Windows与Office智能激活终极指南:KMS_VL_ALL_AIO完整解决方案
Windows与Office智能激活终极指南:KMS_VL_ALL_AIO完整解决方案 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 在数字化工作环境中,稳定可靠的操作系统和办公软件是高效工…...
Linuxptp从入门到排查:一份覆盖安装、配置与常见报错解决的保姆级指南
Linuxptp从入门到排查:一份覆盖安装、配置与常见报错解决的保姆级指南当你在数据中心里部署高精度时间同步服务时,突然发现日志里不断跳出master offset超限警告;或者当你按照教程配置完ptp4l后,时钟状态始终卡在s0无法锁定——这…...
LoRA微调实战2026:从零到生产的完整工程指南
为什么2026年LoRA仍然是最重要的微调方法 大模型微调技术日新月异,但LoRA(Low-Rank Adaptation)自2021年提出以来,不仅没有被淘汰,反而在2026年成为工业界微调的主流方法之一。原因很简单:极致的参数效率。…...
别再只用体素网格了!PCL点云降采样实战:4种方法对比与选型指南(附Python/Open3D代码)
点云降采样实战指南:4种核心方法深度解析与工程选型点云数据处理中,降采样往往是预处理环节的关键一步。面对海量的三维点云数据,如何在不丢失重要几何特征的前提下,有效减少数据量?这直接关系到后续算法的效率和精度。…...
机器学习赋能心电图分析:探索神经认知障碍的早期筛查新路径
1. 项目概述:当心电图遇见机器学习,为大脑健康“把脉”作为一名长期关注医疗AI交叉应用的从业者,我常常思考一个问题:我们能否从那些看似常规、无处不在的临床检查中,挖掘出超越其传统用途的深层价值?心电图…...
机器学习揭示h-BN莫尔超晶格中滑动铁电的拓扑极化图案与调控
1. 项目概述:当机器学习遇见莫尔物理最近几年,但凡关注凝聚态物理前沿的人,都绕不开“莫尔超晶格”这个词。简单来说,就是把两层原子晶体(比如石墨烯、过渡金属硫化物)稍微扭一个角度,或者让它们…...
软体机器人跳跃:离散弹性杆仿真与动态分岔原理详解
1. 软体机器人跳跃:从生物灵感走向工程现实如果你观察过一只蚂蚱的起跳,或者一只青蛙的弹射,那种瞬间爆发、姿态优雅的运动,背后是自然界亿万年来优化的高效能量转换机制。传统的刚性机器人,靠着电机、齿轮和连杆&…...
