代码随想录算法训练营第36期DAY14

DAY14(周二)

二叉树的递归遍历

144二叉树的前序遍历

过了。

  1. /**
  2.  * Definition for a binary tree node.
  3.  * struct TreeNode {
  4.  *     int val;
  5.  *     TreeNode *left;
  6.  *     TreeNode *right;
  7.  *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
  8.  *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
  9.  *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
  10.  * };
  11.  */
  12. class Solution {
  13. public:
  14.     void preorderfunction(TreeNode* cur,vector<int>&res)
  15.     {
  16.         if(cur==nullptrreturn;
  17.         res.push_back(cur->val);
  18.         preorderfunction(cur->left,res);
  19.         preorderfunction(cur->right,res);
  20.     }
  21.     vector<intpreorderTraversal(TreeNode* root) {
  22.         vector<int> res;
  23.         preorderfunction(root,res);
  24.         return res;
  25.     }
  26. };

145二叉树的后序遍历

过了

  1. /**
  2.  * Definition for a binary tree node.
  3.  * struct TreeNode {
  4.  *     int val;
  5.  *     TreeNode *left;
  6.  *     TreeNode *right;
  7.  *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
  8.  *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
  9.  *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
  10.  * };
  11.  */
  12. class Solution {
  13. public:
  14.     void postorderfunction(TreeNode* cur,vector<int>&res)
  15.     {
  16.         if(cur==nullptrreturn;
  17.         postorderfunction(cur->left,res);
  18.         postorderfunction(cur->right,res);
  19.         res.push_back(cur->val);
  20.     }
  21.     vector<intpostorderTraversal(TreeNode* root) {
  22.         vector<int> res;
  23.         postorderfunction(root,res);
  24.         return res;
  25.     }
  26. };

94二叉树的中序遍历

  1. /**
  2.  * Definition for a binary tree node.
  3.  * struct TreeNode {
  4.  *     int val;
  5.  *     TreeNode *left;
  6.  *     TreeNode *right;
  7.  *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
  8.  *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
  9.  *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
  10.  * };
  11.  */
  12. class Solution {
  13. public:
  14.     void inorderfunction(TreeNode* cur,vector<int> &res)
  15.     {
  16.         if(cur==nullptrreturn;
  17.         inorderfunction(cur->left,res);
  18.         res.push_back(cur->val);
  19.         inorderfunction(cur->right,res);
  20.     }
  21.     vector<intinorderTraversal(TreeNode* root) {
  22.         vector<int> res;
  23.         inorderfunction(root,res);
  24.         return res;
  25.     }
  26. };

迭代遍历

这里都需要二刷,来检验和加深印象。

前序遍历

图片来自代码随想录

  1. /**
  2.  * Definition for a binary tree node.
  3.  * struct TreeNode {
  4.  *     int val;
  5.  *     TreeNode *left;
  6.  *     TreeNode *right;
  7.  *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
  8.  *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
  9.  *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
  10.  * };
  11.  */
  12. class Solution {
  13. public:
  14.     vector<intpreorderTraversal(TreeNode* root) {
  15.         vector<int> res;
  16.         stack<TreeNode*> stk;
  17.         if(root==nullptrreturn res;
  18.         stk.push(root);
  19.         while(!stk.empty())
  20.         {
  21.             //先获取,以便进行迭代
  22.             TreeNode* cur=stk.top();
  23.             stk.pop();
  24.             res.push_back(cur->val);
  25.             //空结点不入栈,记住这里是要入栈,而不是单纯的更新cur
  26.             if(cur->right) stk.push(cur->right);
  27.             if(cur->left)  stk.push(cur->left);
  28.         }
  29.         return res;
  30.     }
  31. };

中序遍历

  1. /**
  2.  * Definition for a binary tree node.
  3.  * struct TreeNode {
  4.  *     int val;
  5.  *     TreeNode *left;
  6.  *     TreeNode *right;
  7.  *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
  8.  *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
  9.  *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
  10.  * };
  11.  */
  12. class Solution {
  13. public:
  14.     vector<intinorderTraversal(TreeNode* root) {
  15.         vector<int> res;
  16.         stack<TreeNode*> stk;
  17.         TreeNode* cur=root;
  18.         if(root==nullptrreturn res;
  19.         while(cur!=NULL||!stk.empty())
  20.         {
  21.             if(cur!=NULL)//根据先进后出的栈特点 以及,中序遍历的特点:访问顺序与输出顺序相反,来入栈
  22.             {
  23.                 //访问过的都入栈
  24.                 stk.push(cur);
  25.                 cur=cur->left;//找最左的孩子
  26.             }else{
  27.                 cur=stk.top();//要处理它
  28.                 stk.pop();
  29.                 res.push_back(cur->val);//中。(自己是最左的,那么自己就没有左孩子了,自己就是中了)。
  30.                 //那么最左孩子的头上:中节点怎么办呢?不用着急,下一次循环会处理,因为有!stk.empty();
  31.                 cur=cur->right; //右
  32.             }
  33.         }
  34.         return res;
  35.     }
  36. };
  1. /**
  2.  * Definition for a binary tree node.
  3.  * struct TreeNode {
  4.  *     int val;
  5.  *     TreeNode *left;
  6.  *     TreeNode *right;
  7.  *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
  8.  *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
  9.  *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
  10.  * };
  11.  */
  12. class Solution {
  13. public:
  14.     vector<intpostorderTraversal(TreeNode* root) {
  15.         vector<int> res;
  16.         stack<TreeNode*> stk;
  17.         if(root==nullptrreturn res;
  18.         stk.push(root);
  19.         while(!stk.empty())
  20.         {
  21.             //先获取,以便进行迭代
  22.             TreeNode* cur=stk.top();
  23.             stk.pop();
  24.             res.push_back(cur->val);
  25.             //空结点不入栈,记住这里是要入栈,而不是单纯的更新cur
  26.             if(cur->left)  stk.push(cur->left);
  27.             if(cur->right) stk.push(cur->right);
  28.         }
  29.         reverse(res.begin(),res.end());
  30.         return res;
  31.     }
  32. };

后序遍历

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

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

相关文章

简易的项目管理软件有哪些推荐?

简易的项目管理软件有很多&#xff0c;以下是一些推荐选项&#xff1a; zz-plan&#xff1a;https://zz-plan.com/ 作为一个在线甘特图工具&#xff0c;它适用于不同规模和复杂性的项目管理&#xff0c;能够轻松管理任务和进度。 Asana&#xff1a;https://asana.com/ 以其简…

4. FactoryTalk View SE按钮弹出二次确认

在按钮界面–按钮属性–添加释放动作–选择需要确认–配置–确定。 &#xff08;如果是用变量连接的比如需要输入密码等等选择使用变量&#xff09; 这样就完成了二次确认的窗口设置。

106短信群发平台:拓客拉新、商品促销,效果究竟如何?一试便知!

106短信群发平台在拓客拉新和商品促销方面的效果是非常显著的。 首先&#xff0c;从发送速度和到达率来看&#xff0c;106短信平台表现优秀。无论是节假日还是平日&#xff0c;其发送速度都能保持在一个较快的水平&#xff0c;这对于需要及时到达的营销信息尤为重要。同时&…

Leetcode—1991. 找到数组的中间位置【简单】

2024每日刷题&#xff08;129&#xff09; Leetcode—1991. 找到数组的中间位置 实现代码 class Solution { public:int findMiddleIndex(vector<int>& nums) {int sum accumulate(nums.begin(), nums.end(), 0);int prefix 0;for(int i 0; i < nums.size();…

第十三章 计算机网络

这里写目录标题 1.网络设备2.协议簇2.1电子邮件(传输层)2.2地址解析(网际层)2.3DHCP(动态主动配置协议)2.4URL(统一资源定位器)2.5IP地址和子网掩码 1.网络设备 物理层&#xff1a;中继器&#xff0c;集线器(多路中继器) 数据链路层&#xff1a;网桥&#xff0c;交换机(多端口…

软件FMEA的时机:架构设计、详设阶段——FMEA软件

免费试用FMEA软件-免费版-SunFMEA 软件FMEA&#xff08;故障模式与影响分析&#xff09;是一种预防性的质量工具&#xff0c;旨在识别软件中可能存在的故障模式&#xff0c;并分析其对系统性能、安全性和可靠性的影响。在软件开发生命周期中&#xff0c;选择适当的时机进行FME…

[Docker]容器的网络类型以及云计算

目录 知识梗概 1、常用命令2 2、容器的网络类型 3、云计算 4、云计算服务的几种主要模式 知识梗概 1、常用命令2 上一篇已经学了一些常用的命令&#xff0c;这里补充两个&#xff1a; 导出镜像文件&#xff1a;[rootdocker ~]# docker save -o nginx.tar nginx:laster 导…

rust调用SQLite实例

rusqlite库介绍 Rusqlite是一个用Rust编写的SQLite库&#xff0c;它提供了对SQLite数据库的操作功能。Rusqlite的设计目标是提供一个简洁易用的API&#xff0c;以便于Rust程序员能够方便地访问和操作SQLite数据库。 Rusqlite的主要特点包括&#xff1a; 遵循Rust的类型系统和…

用滑动条改变字体的大小(简单好抄)

1.首先在屏幕中添加一个滑动条和你要改变字体大小的文本&#xff08;用新版的&#xff09; 2.点击滑动条设置value的最大值和最小值 3.编写脚本 using System.ComponentModel; using TMPro; using UnityEngine; using UnityEngine.UI;public class FontSizeSlider : MonoBehav…

LeetCode 面试经典150题 228.汇总区间

题目&#xff1a; 给定一个 无重复元素 的 有序 整数数组 nums 。 返回 恰好覆盖数组中所有数字 的 最小有序 区间范围列表 。也就是说&#xff0c;nums 的每个元素都恰好被某个区间范围所覆盖&#xff0c;并且不存在属于某个范围但不属于 nums 的数字 x 。 列表中的每个区…

IEEE(TOP),CCF推荐,5本毕业神刊,最快7天录用!指标优秀

本期盘点计算机领域超顺快刊&#xff0c;涵盖IEEE1区TOP、CCF推荐SCIE&#xff0c;期刊指标优秀&#xff0c;审稿周期短&#xff0c;质量稳定&#xff0c;有意向作者请看下文&#xff1a; IEEE旗下1区&#xff08;TOP&#xff09; 1 期刊简介 ✅出版社&#xff1a;IEEE ✅影…

Java17的崛起——newrelic的2024 年 Java 生态系统状

newrelic 2024 年 Java 生态系统状况 原文PDF&#xff1a;点我下载 生产中最常用的 Java 版本 Oracle 每六个月发布一次新的 Java 版本&#xff08;通常是在 3 月和 9 月&#xff09;&#xff0c;每个版本都包含一些新功能和错误修复。每两年&#xff0c;Oracle 都会推出一…

Linux环境下部署vsftp+mysql用户认证

安装mysql(不要使用红帽的RPM版的mysql) 使用编译或静态库安装mysql 1、编译安装pam_mysql 下载软件&#xff1a; http://downloads.sourceforge.net/project/pam-mysql/pam-mysql/0.7RC1/pam_mysql-0.7RC1.tar.gz?rhttp%3A%2F%2Fsourceforge.net%2Fprojects%2Fpam-mysql%2F…

数据结构_顺序表(动态)和链表(带头双向循环)的区别

✨✨所属专栏&#xff1a;数据结构✨✨ ✨✨作者主页&#xff1a;嶔某✨✨ 储存空间 我们知道顺序表的实质就是一个数组&#xff0c;数组的物理地址是连续的&#xff1b;而链表是由一个个的节点组成的&#xff0c;物理地址不一定连续、因为在malloc空间的时候不能保证&#xf…

JETBRAINS IDES 分享一个2099通用试用码!IDEA 2024 版 ,支持一键升级

文章目录 废话不多说上教程&#xff1a;&#xff08;动画教程 图文教程&#xff09;一、动画教程激活 与 升级&#xff08;至最新版本&#xff09; 二、图文教程 &#xff08;推荐&#xff09;Stage 1.下载安装 toolbox-app&#xff08;全家桶管理工具&#xff09;Stage 2 : 下…

【计算机科学速成课】笔记四

文章目录 19.内存&存储介质课程引出——内存与存储器的区别纸带存储磁芯存储磁带、磁鼓存储磁盘&#xff08;硬盘&#xff09;存储软盘存储光盘存储&#xff08;CD&DVD&#xff09;固态硬盘存储 20.文件系统课程引出——文件格式.txt文本文件.wav 音频文件.bmp位图文件…

Seal^_^【送书活动第3期】——《Hadoop大数据分析技术》

Seal^_^【送书活动第3期】——《Hadoop大数据分析技术》 一、参与方式二、作者荐语三、图书简介四、本期推荐图书4.1 前 言4.2 本书内容4.3 本书目的4.4 本书适合的读者4.5 配套源码、PPT课件等资源下载 五、目 录六、&#x1f6d2; 链接直达 Hadoop框架入门书&#xff0c;可当…

明星中药企业系列洞察(四)丨从超级单品到健康医药集团,云南白药如何打造自己的多元宇宙?

前不久&#xff0c;云南白药发布的2023年年报显示&#xff0c;报告期内&#xff0c;云南白药实现营业收入391.11亿元&#xff0c;同比增长7.19%&#xff0c;创同期历史新高。同时&#xff0c;公司计划每10股派发现金红利20.77元&#xff08;含税&#xff09;&#xff0c;分红总…

17.Blender RC大佬EEVEE皮肤节点预设导入

如何添加节点预设 在底下的左下角打开Geometry Node Editor 选中正方体&#xff0c;点击新建 当鼠标指针在两个模块之间&#xff0c;是十字的样子时 可以拖出一个新的板块 然后打开文件浏览器 找到节点预设然后拖入到底下的节点编辑界面就可以了或者是blend文件&#xf…

Go Web 开发 Demo【用户登录、注册、验证】

前言 这篇文章主要是学习怎么用 Go 语言&#xff08;Gin&#xff09;开发Web程序&#xff0c;前端太弱了&#xff0c;得好好补补课&#xff0c;完了再来更新。 1、环境准备 新建项目&#xff0c;生成 go.mod 文件&#xff1a; 出现报错&#xff1a;go: modules disabled by G…