代码随想录|day 13

Day 13 又出去玩了

附上一个学习链接:https://www.geeksforgeeks.org

具体页面:Introduction to Binary Tree - Data Structure and Algorithm Tutorials - GeeksforGeeks

一、理论学习

今天是回顾了二叉树中最重要的操作 : 遍历二叉树。 我们可以将许多后续的问题 转化成遍历二叉树来解决。 那么遍历二叉树有两种,一种是递归去解决,另一种是非递归的算法。 对于递归而言,我们要确定递归函数的参数和返回值要确定终止条件。要确定单层递归的逻辑,缺一不可。 让我们以其中先序遍历为例, 我们的终止条件是什么?终止条件是当前指针为空指针的时候就停止遍历。那我们传入的参数最重要的是什么? 最重要的就是。 要访问的节点。至于 传入一个数组是为了方便我们去返回和记录,所以说最重要的还是我们的节点。当我们传入了节点之后,我们就确定了传入的参数,那也确定了我们的终止条件,也就是节点为空。那么我们的单层循环逻辑是什么呢?将根节点的值加入到数组,也就是处理我们的根节点,然后去遍历继续去处理我们根节点的左节点以及依次是他们的右节点。 那么这样我们就讲完了前序遍历的递归算法,那么对应于后序还有中序都是类似的思路。

那么难点在哪里呢?难点在于非递归。 而非递归之所以会产生前序后序是一组,而中序单独是一组的原因在于。 前序遍历和后序遍历都可以通过某种方法使得我们遍历的。 节点就是我们处理的节点,而中序遍历。 遍历到的节点并不是我们当前就要处理的节点所以说会分成这两类。 那么我们先说前序遍历前序遍历是最直观的。 那我们想象想象一个土哦,我们在做非递归的时候要。 善于去模拟。 他整个执行的过程那我们先想象一个债,然后呢,我们将根节点入栈。 然后我们是不是就应该处理我们的根节点了?我们把根节点弹出来,然后呢?接着去访问他的右节点,为什么是右节点呢?因为我们输出的顺序应该是,呃,跟左右,然而我们的栈是先进后出,所以说很明显我们应该先让他的右节点进栈。 再让我们的左节点入栈。 在此之前,我们让根节点出战了然后就让它打印输出就好了。 不断地去循环就好。 循环终止的条件是栈为空,对吧? 好,那么后续是如何用前序来。 改装的呢? 我们看到前序的顺序应该是钟左右,那我们把。 他改成中有左是不是也是可以的。 中右左的顺序进行一个反转。 是不是左右中啊? 那这样的话,我们就通过这样一个手段完成了后续遍历。最后最重要的就是我们的中序遍历了对于中序遍历来说呢? 我们需要一个指针来指向我们当前要去处理的这个元素。 这次我们循环的条件是,呃,指针不为空或者。 我们的战不为空。 一开始我们要我们让。 我们的指针,一路向左。 将遍历到的元素都加入战中。 直到我们处理到一个空节点。 就让该元素出栈。 出站之后, 我们打印输出然后再去访问他的右节点。 ,我们去访问他的右节点。 通过这样不停地循环,我们就能得到我们想要的遍历顺序。

part 1 二叉树基础概念回顾【刚考完 还记得】附上备忘链接

代码随想录 (programmercarl.com)

Binary Tree is defined as a tree data structure where each node has at most 2 children. Since each element in a binary tree can have only 2 children, we typically name them the left and right child.

Binary Tree Data Structure

// Use any below method to implement Nodes of tree

// Method 1: Using "struct" to make
// user-define data type
struct node {
	int data;
	struct node* left;
	struct node* right;
};

// Method 2: Using "class" to make
// user-define data type
class Node {
public:
	int data;
	Node* left;
	Node* right;
};

二、刷题部分

递归遍历:

三、碎碎念

啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊我爱发疯

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

解决挂梯子 无法正常上网 的问题

方法: 打开 控制面板 👉 网络和Internet 👉 Internet选项 👉 连接 👉 局域网设置 👉 代理服务器 👉 取消选项 有问题可参考下图

flask+python企业产品订单管理系统938re

在设计中采用“自下而上”的思想,在创新型产品提前购模块实现了个人中心、个体管理、发布企业管理、投资企业管理、项目分类管理、产品项目管理、个体投资管理、企业投资管理、个体订单管理、企业订单管理、系统管理等的功能性进行操作。最终,对基本系统…

面试经典150题——三数之和

​"The road to success and the road to failure are almost exactly the same." - Colin R. Davis 1. 题目描述 2. 题目分析与解析 2.1 思路一——暴力方法 因为三个数相加为0,那么说明其中两个加数的和与另一个加数为相反数则满足题意。所以可以得到…

[职场] 公安管理学就业方向及前景 #媒体#笔记#笔记

公安管理学就业方向及前景 公安管理学是中国普通高等学校本科专业。本专业文理兼收,学制4年,授予法学学士学位。本专业培养掌握马克思主义基本原理,政治坚定,坚持党和国家的路线、方针、政策,具有良好职业素养、科学素…

Python并发编程之多线程

前言 本文介绍并发编程中另一个重要的知识 - 线程。 线程介绍 我们知道一个程序的运行过程是一个进程,在操作系统中每个进程都有一个地址空间,而且每个进程默认有一个控制线程,打个比方,在一个车间中有很多原材料通过流水线加工…

基于查询模板的知识图谱问答系统

目录 前言1 知识图谱问答系统的两个核心问题1.1 问句的表示与语义理解1.2 知识库的映射和匹配 2 问答基本流程2.1 模板生成2.2 模板实例化2.3 查询排序和结果获取 3 模板自动生成3.1 quint方法3.2 对齐任务 4 基于查询模板的知识图谱问答系统优缺点4.1 系统的优点4.2 系统的缺点…

安全的接口访问策略

渗透测试 一、Token与签名 一般客户端和服务端的设计过程中,大部分分为有状态和无状态接口。 一般用户登录状态下,判断用户是否有权限或者能否请求接口,都是根据用户登录成功后,服务端授予的token进行控制的。 但并不是说有了tok…

机器学习:Softmax介绍及代码实现

Softmax原理 Softmax函数用于将分类结果归一化,形成一个概率分布。作用类似于二分类中的Sigmoid函数。 对于一个k维向量z,我们想把这个结果转换为一个k个类别的概率分布p(z)。softmax可以用于实现上述结果,具体计算公式为: 对于…

VMWare虚拟机安装

VMWare虚拟机安装 0.Linux运行平台介绍1. VMWare 虚拟软件安装检查虚拟网卡是否安装 创建VMWare虚拟机对创建虚拟机的内容进行设置挂在要安装的CentOS的ISO文件 0.Linux运行平台介绍 Linux的运行平台一共有两种,其中包括物理机平台和虚拟机平台,在学习阶段当中建议使用虚拟机 …

海康威视球机摄像头运动目标检测、跟踪与轨迹预测

一、总体方案设计 运动目标检测与跟踪方案设计涉及视频流的实时拍摄、目标检测、轨迹预测以及云台控制。以下是四个步骤的详细设计: 1.室内场景视频流拍摄 使用海康威视球机摄像头进行室内视频流的实时拍摄。确保摄像头能覆盖整个室内空间,以便捕捉所…

考研数据结构笔记(7)

循环链表、静态链表、顺序表和链表的比较 循环链表循环单链表循环双链表 静态链表什么是静态链表如何定义一个静态链表?简述基本操作的实现 顺序表和链表的比较逻辑结构物理结构/存储结构数据的运算/基本运算创建销毁增加、删除查找 循环链表 循环单链表 循环双链表…

【浙大版《C语言程序设计实验与习题指导(第4版)》】实验7-1-6 求一批整数中出现最多的个位数字(附测试点)

定一批整数,分析每个整数的每一位数字,求出现次数最多的个位数字。例如给定3个整数1234、2345、3456,其中出现最多次数的数字是3和4,均出现了3次。 输入格式: 输入在第1行中给出正整数N(≤1000&#xff0…

Game辅助推广购卡系统全新一键安装版-已激活

(购买本专栏可免费下载栏目内所有资源不受限制,持续发布中,需要注意的是,本专栏为批量下载专用,并无法保证某款源码或者插件绝对可用,介意不要购买) 资源简介 运行环境 PHP5.6~7.0+MYSQL5.6 本程序可配合(伯乐发卡)基础版使用; 界面炫酷大气!程序内核为yunucm…

1.CVAT建项目步骤

文章目录 1. 创建project2. 创建task2.1. label 标签详解2.2.高级配置 Advanced configuration 3. 分配任务4. 注释者规范 CVAT的标注最小单位是Task,每个Task为一个标注任务。 1. 创建project 假设你并不熟悉cvat的标注流程,这里以图像2D目标检测为例进…

13. 串口接收模块的项目应用案例

1. 使用串口来控制LED灯工作状态 使用串口发送指令到FPGA开发板,来控制第7课中第4个实验的开发板上的LED灯的工作状态。 LED灯的工作状态:让LED灯按指定的亮灭模式亮灭,亮灭模式未知,由用户指定,8个变化状态为一个循…

《CSS 简易速速上手小册》第7章:CSS 预处理器与框架(2024 最新版)

文章目录 7.1 Sass:更高效的 CSS 编写7.1.1 基础知识7.1.2 重点案例:主题颜色和字体管理7.1.3 拓展案例 1:响应式辅助类7.1.4 拓展案例 2:深色模式支持 7.2 Bootstrap:快速原型设计和开发7.2.1 基础知识7.2.2 重点案例…

微信小程序的了解和使用

微信小程序 微信小程序的项目组成 pages 文件夹 用于存放所有的小程序页面 logs 文件夹 用于存放所有的日志文件 utils 文件夹 用于存放工具性质的模块 js app.js 小程序的入口文件 app.json 小程序的全局配置文件 app.wxss 全局样式文件 project.config.json 项目配置文…

解放双手!ChatGPT助力编写JAVA框架!

摘要 本文介绍了使用 ChatGPT逐步创建 一个简单的Java框架,包括构思、交流、深入优化、逐步完善和性能测试等步骤。 亲爱的Javaer们,在平时编码的过程中,你是否曾想过编写一个Java框架去为开发提效?但是要么编写框架时感觉无从下…

4核8g服务器能支持多少人访问?2024新版测评

腾讯云轻量4核8G12M轻量应用服务器支持多少人同时在线?通用型-4核8G-180G-2000G,2000GB月流量,系统盘为180GB SSD盘,12M公网带宽,下载速度峰值为1536KB/s,即1.5M/秒,假设网站内页平均大小为60KB…

程序员如何 “高效学习”?

开篇先说说我吧,马上人生要步入30岁的阶段,有些迷茫,更多的是焦虑,因为行业的特殊性导致我无时无刻不对 “青春饭” 的理论所担忧。担忧归担忧,生活还要继续,我们都知道这行全靠 “学习” 二字,…