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

news2024/11/26 0:22:54

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. };

后序遍历

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

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

相关文章

卡尔曼滤波实战

入门内容 假如有个超声波&#xff0c;它传回的数据是这样的&#xff0c;这样的数据是用不了的 我们想要的是稳定的数据 此时我们引入滤波&#xff0c;把里面的噪声去掉&#xff0c;使得数据更平滑 适用系统&#xff1a; 符合两个特质&#xff1a;线性和高斯。 也叫线性高斯…

PyCharm怎么安装Comate与使用示范

目录 简单介绍Comate 安装步骤详解 Comate使用示范详解 使用总结 简单介绍Comate Baidu Comate智能编码助手是一款基于文心大模型打造的编码辅助工具&#xff0c;具备多重优势&#xff0c;包括代码智能、应用场景丰富、创造价值高、广泛应用等。它能帮助开发者提升编码效率…

AR人脸道具SDK解决方案,实现道具与人脸的自然融合

AR人脸道具SDK解决方案&#xff0c;实现道具与人脸的自然融合美摄科技以其卓越的技术实力和创新能力&#xff0c;为企业带来了全新的AR人脸道具SDK解决方案。这一解决方案将为企业打开全新的市场机会&#xff0c;为用户带来前所未有的互动体验。 颠覆传统&#xff0c;开启AR人…

【Debug日记】albumentations包安装失败解决方案

直接pip安装pip install albumentations 报错&#xff1a; ERROR: Command errored out with exit status 1:command: D:\anaconda3\envs\pytorch\python.exe D:\anaconda3\envs\pytorch\lib\site-packages\pip\_vendor\pep517\in_process\_in_process.py build_wheel C:\Users…

2024年营销技术远景图发布:14,106种营销技术产品(同比增长27.8%)

每年五月的第一个星期二&#xff08;美国东部时间&#xff09;&#xff0c;Scott Brinker设定为Martech Day&#xff0c;以此来庆祝营销技术行业和所有有才华的营销技术专家和营销运营专业人士的工作&#xff0c;「为你们在开拓这片荒野所做的一切而欢呼&#xff01;」 同时&a…

24年考研管综199真题PDF共18页

整理了24年考研管综199真题PDF共18页&#xff0c;包含问题求解&#xff0c;条件充分性判断&#xff0c;逻辑推理&#xff0c;写作&#xff0c;几个部分&#xff0c;希望对大家有所帮助 一、问题求解 这部分包含15道小题&#xff0c;每题3分&#xff0c;共45分。题目类型为选择…

SpringBoot使用AOP注解记录操作日志

一、前言 日志&#xff1a;指系统所指定对象的某些操作和其操作结果按时间有序的集合。 操作日志&#xff1a;主要是对某个对象进行新增操作或者修改操作后记录下这个新增或者修改&#xff0c;操作日志要求可读性比较强。比如张三在某个时间下了订单买了某个商品&#xff01; …

CSS选择器(基本+复合+伪类)

目录 CSS选择器 基本选择器 标签选择器&#xff1a;使用标签名作为选择器->选中同名标签设置样式 类选择器&#xff1a;给类选择器定义一个名字.类名&#xff0c;并给标签添加class"类名" id选择器&#xff1a;跟类选择器非常相似&#xff0c;给id选择器定义…

【Qt问题】VS2019 Qt win32项目如何添加x64编译方式

往期回顾&#xff1a; 【Qt问题】Qt常用快捷键汇总-CSDN博客 【Qt问题】Qt Creator 如何链接第三方库-CSDN博客 【Qt问题】Qt 如何带参数启动外部进程-CSDN博客 【Qt问题】VS2019 Qt win32项目如何添加x64编译方式 我们都知道vs2019在编译项目的时候是需要选择编译环境的&…

完全背包问题(零钱交换+组合总和

完全背包问题&#xff08;物体可以无限使用&#xff0c;正序遍历即可 For循环顺序也能交换&#xff0c;装满的话 零钱交换 完全背包问题&#xff0c;如果求装满背包有几种方法&#xff0c;都用累加。 遍历顺序影响到输出的结果是组合数还是排列数 先物品再背包是组合数&…

宏集PLC+HMI触控一体机助力构建物料自动分拣系统

一、应用背景 随着工业生产和物流领域的快速发展&#xff0c;对仓储、分拣和配送效率以及准确性的需求不断提高。传统的人工分拣已无法满足市场需求&#xff0c;为了实现智能物流&#xff0c;对高性能的物料输送分拣设备需求更为迫切。 二、物料分拣系统介绍 智能化物料分拣系…

【强训笔记】day15

NO.1 代码实现&#xff1a; #include<iostream> #include<cmath>using namespace std; typedef long long ll;int main() {ll x;cin>>x;ll asqrt(x);ll x1a*a,x2(a1)*(a1);if(x-x1<x2-x) cout<<x1<<endl;else cout<<x2<<endl;r…

网络安全的未来:挑战、策略与创新

引言&#xff1a; 在数字化时代&#xff0c;网络安全已成为个人和企业不可忽视的议题。随着网络攻击的日益频繁和复杂化&#xff0c;如何有效保护数据和隐私成为了一个全球性的挑战。 一、网络安全的现状与挑战 网络安全面临的挑战多种多样&#xff0c;包括但不限于恶意软件、…

C语言 main( ) 函数的指针数组形参是怎么回事?

一、问题 在使⽤⼀些开发⼯具⽣成C语⾔⽂件时&#xff0c;主函数 mian( ) 中会有参数&#xff0c;这个参数到底是怎么回事⼉呢&#xff1f; 二、解答 mian( ) 称为主函数&#xff0c;是所有程序运⾏的⼊口。 mian( ) 函数是由系统调⽤的&#xff0c;当处于操作命令状态下&…

47. UE5 RPG 实现角色死亡效果

在上一篇文章中&#xff0c;我们实现了敌人受到攻击后会播放受击动画&#xff0c;并且还给角色设置了受击标签。并在角色受击时&#xff0c;在角色身上挂上受击标签&#xff0c;在c里&#xff0c;如果挂载了此标签&#xff0c;速度将降为0 。 受击有了&#xff0c;接下来我们将…

Linux中每当执行‘mount’命令(或其他命令)时,自动激活执行脚本:输入密码,才可以执行mount

要实现这个功能&#xff0c;可以通过创建一个自定义的mount命令的包装器&#xff08;wrapper&#xff09;来完成。这个包装器脚本会首先提示用户输入密码&#xff0c;如果密码正确&#xff0c;则执行实际的mount命令。以下是创建这样一个包装器的步骤&#xff1a; 创建一个名为…

IP 地址追踪工具促进有效的 IP 管理

网络 IP 地址空间的结构、扫描和管理方式因组织的规模和网络需求而异&#xff0c;网络越大&#xff0c;需要管理的 IP 就越多&#xff0c;IP 地址层次结构就越复杂。因此&#xff0c;如果没有 IP 地址管理&#xff08;IPAM&#xff09;解决方案&#xff0c;IP 资源过度使用和地…

超越传统游戏:生成式人工智能对游戏的变革性影响

人工智能&#xff08;AI&#xff09;在游戏中的应用 游戏产业是一个充满活力、不断发展的领域&#xff0c;人工智能&#xff08;AI&#xff09;的融入对其产生了重大影响。这一技术进步彻底改变了游戏的开发、玩法和体验方式。本文分析的重点是传统人工智能和生成式人工智能在游…

【影片欣赏】【指环王】【魔戒:双塔奇谋 The Lord of the Rings: The Two Towers】

2003年发行&#xff0c;Special Extended DVD Edition Part One 1. The Foundations of Stone 2. Elven Rope 3. The Taming of Smeagol 4. The Uruk-hai 5. The Three Hunters 6. The Burning of the Westfold 7. Massacre at the Fords of Isen 8. The Banishment of Eomer …

Jmeter 中 CSV 如何参数化测试数据并实现自动断言

当我们使用Jmeter工具进行接口测试&#xff0c;可利用CSV Data Set Config配置元件&#xff0c;对测试数据进行参数化&#xff0c;循环读取csv文档中每一行测试用例数据&#xff0c;来实现接口自动化。此种情况下&#xff0c;很多测试工程师只会人工地查看响应结果来判断用例是…