代码随想录 Leetcode144/94/145 二叉树的前/中/后序遍历

题目:

前:

中:

后:


代码(首刷自解 2024年1月24日):

//前序遍历,递归
class Solution {
public:
    void funcOfRecursion(TreeNode* cur, vector<int>& vec) {
        if (cur == nullptr) return;
        vec.emplace_back(cur->val);
        funcOfRecursion(cur->left,vec);
        funcOfRecursion(cur->right,vec);
    }
    vector<int> preorderTraversal(TreeNode* root) {
        vector<int> vec = {};
        if (root == nullptr) return vec;
        funcOfRecursion(root,vec);
        return vec; 
    }
};
//中序遍历,递归
class Solution {
public:
    void funcOfRecursion(TreeNode* cur,vector<int>& vec) {
        if(cur == nullptr) return;
        funcOfRecursion(cur->left,vec);
        vec.emplace_back(cur->val);
        funcOfRecursion(cur->right,vec);
    }
    vector<int> inorderTraversal(TreeNode* root) {
        vector<int> vec = {};
        if(root == nullptr) return vec;
        funcOfRecursion(root,vec);
        return vec;
    }
};
//后序遍历,递归
class Solution {
public:
    void funcOfRecursion(TreeNode* cur, vector<int>& vec) {
        if(cur == nullptr) return;
        funcOfRecursion(cur->left,vec);
        funcOfRecursion(cur->right,vec);
        vec.emplace_back(cur->val);
    }
    vector<int> postorderTraversal(TreeNode* root) {
        vector<int> vec = {};
        if(root == nullptr) return vec;
        funcOfRecursion(root,vec);
        return vec;
    }
};
//前序遍历,迭代
class Solution {
public:
    vector<int> preorderTraversal(TreeNode* root) {
        vector<int> res = {};
        if(root == nullptr) return res;
        stack<TreeNode*> st;
        TreeNode* cur = root;
        st.push(cur);
        while (!st.empty()) {
            TreeNode* node = st.top();
            st.pop();
            res.emplace_back(node->val);
            if(node->right) st.push(node->right);
            if(node->left) st.push(node->left);
        }
        return res;
    }
};
//中序遍历,迭代
class Solution {
public:
    vector<int> inorderTraversal(TreeNode* root) {
        vector<int> res = {};
        if(root == nullptr) return res;
        stack<TreeNode*> st;
        TreeNode* cur = root;
        while (!st.empty() || cur != NULL) {
            if (cur != nullptr) {
                st.push(cur);
                cur = cur -> left;
            } else {
                cur = st.top();
                res.emplace_back(cur->val);
                st.pop();
                cur = cur -> right;
            }
        }
        return res;
    }
};
//后序遍历 迭代
class Solution {
public:
    vector<int> postorderTraversal(TreeNode* root) {
        vector<int> res = {};
        if(root == nullptr) return res;
        stack<TreeNode*> st;
        TreeNode* cur = root;
        st.push(cur);
        while (!st.empty()) {
            TreeNode* node = st.top();
            st.pop();
            res.emplace_back(node->val);
            if(node->left) st.push(node->left);
            if(node->right) st.push(node->right);
        }
        reverse(res.begin(),res.end());
        return res;
    }
};

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

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

相关文章

使用frp透传软件搭建本地运行的私有邮箱服务器

起因&#xff1a;随着我公司在线应用软件的增多&#xff0c;比如wordpress、 next cloud、SuitCRM 、iFair等&#xff0c;许多场合都要求填写邮箱地址&#xff0c;绑定邮箱。因为不想将过多的数据存储于第三方空间&#xff0c;因此考虑在公司局域网内搭建一个私有的电子邮箱服务…

嵌入式软件工程师如何快速成长

今天和大家分享一下&#xff0c;程序员如何独挡一面这个话题&#xff0c;这是一个很大的话题&#xff0c;我把他分成三部分来谈&#xff1a; 一、需求转换的能力或者叫理解需求的能力&#xff1b; 二、分配时间的能力&#xff1b; 三、开发质量的问题&#xff1b; 我为什么…

全新UI基于Thinkphp的最新自助打印系统/云打印小程序源码/附教程

这是一款全新的基于Thinkphp的最新自助打印系统&#xff0c;最新UI界面设计的云打印小程序源码&#xff0c;带有简单的教程。 源码下载&#xff1a;YISHEN源码网&#xff08;ms3.ishenglu.c&#xff09;om

Java-反射-注解-动态代理

二、反射 翻译成人话就是&#xff1a;反射技术&#xff0c;指的是加载类的字节码到内存&#xff0c;并以编程的方法解刨出类中的各个成分&#xff08;成员变量、方法、构造器等&#xff09;。 反射有啥用呢&#xff1f;其实反射是用来写框架用的&#xff0c;但是现阶段同学们对…

RK3588平台开发系列讲解(视频篇)RKMedia框架

文章目录 一、 RKMedia框架介绍二、 RKMedia框架API三、 视频处理流程四、venc 测试案例沉淀、分享、成长,让自己和他人都能有所收获!😄 📢RKMedia是RK提供的一种多媒体处理方案,可实现音视频捕获、音视频输出、音视频编解码等功能。 一、 RKMedia框架介绍 功能: VI(输…

碳排放预测 | Matlab实现LSTM多输入单输出未来碳排放预测,预测新数据

碳排放预测 | Matlab实现LSTM多输入单输出未来碳排放预测&#xff0c;预测新数据 目录 碳排放预测 | Matlab实现LSTM多输入单输出未来碳排放预测&#xff0c;预测新数据预测效果基本描述程序设计参考资料 预测效果 基本描述 1.Matlab实现LSTM长短期记忆神经网络多输入单输出未来…

Sentinel-1 扩展时序注释数据集 (ETAD)的查询和下载

概述 Sentinel-1的扩展计时注释数据集&#xff08;ETAD&#xff09;是ESA&#xff08;DLR作为承包商&#xff09;开发的新辅助产品&#xff0c;为用户提供校正&#xff0c;将Sentinel-1 SLC图像的几何精度提高到厘米级别。该产品包含分析就绪层&#xff0c;用于消除大气路径延…

Linux系统中虚拟文件系统原理与方法

在 Unix 的世界里&#xff0c;有句很经典的话&#xff1a;一切对象皆是文件。这句话的意思是说&#xff0c;可以将 Unix 操作系统中所有的对象都当成文件&#xff0c;然后使用操作文件的接口来操作它们。Linux 作为一个类 Unix 操作系统&#xff0c;也努力实现这个目标。 虚拟文…

三维重建(6)--多视图几何

目录 一、运动恢复问题&#xff08;SfM&#xff09; 二、欧式结构恢复问题 1、概述 2、算法流程 3、本质矩阵分解 4、欧式结构恢复歧义 三、仿射结构恢复问题 1、概述 2、因式分解法 3、仿射结构恢复歧义 四、透视结构恢复问题 1、概述 2、透视结构恢复歧义 3…

【数据结构与算法】之字符串系列-20240125

字符串系列 一、520. 检测大写字母二、面试题 01.01. 判定字符是否唯一三、面试题 01.02. 判定是否互为字符重排四、面试题 01.03. URL化五、面试题 01.04. 回文排列六、面试题 01.09. 字符串轮转 一、520. 检测大写字母 简单 我们定义&#xff0c;在以下情况时&#xff0c;单…

分布式应用程序设计项目管理

1. 项目的定义 项目是一种特定的、新颖的行动&#xff0c;目的是以有条不紊、逐步的方式构建一个尚未存在确切对应物的未来现实。它是对精心制定的需求的回应&#xff0c;旨在满足业主的需要。项目包括一个可能是物理或智力的目标&#xff0c;并且需要使用给定的资源来执行一系…

【SD】sadtalk

下载地址&#xff1a; 123&#xff1a;https://www.123pan.com/s/VzULVv-0OXX.html 提取码:3KhD 百度&#xff1a; https://pan.baidu.com/share/init?surlRB9oTmlbIV0pg1Th-Tdd4Q 提取码: uk87 效果不是很好&#xff0c;适合小图片。推荐&#xff1a;heygen 参考设置&…

H12-821_111

111.如图所示&#xff0c;R2传递10.0.1.0/24的路由给R3时&#xff0c;该路由的Next_Hop地址是以下哪一个&#xff1f; A.10.0.23.3 B.10.0.23.2 C.10.0.12.1 D.10.0.12.2 答案&#xff1a;C 注释&#xff1a; 这道题想给大家强调的是R1发送路由给R2时&#xff0c;下一跳地址是…

redis整合

一.redis的发布订阅 什么 是发布和订阅 Redis 发布订阅 (pub/sub) 是一种消息通信模式&#xff1a;发送者 (pub) 发送消息&#xff0c;订阅者 (sub) 接收消息。 Redis 客户端可以订阅任意数量的频道。 1、Redis的发布和订阅 客户端订阅频道发布的消息 频道发布消息 订阅者就可以…

C#从网址上读取json数据

需求&#xff1a;从客户给的网址中读取json格式的数据。 找了好多资料&#xff0c;都不太好使&#xff0c;看到了一篇很有帮助的文章。以下大部分内容和这篇找到的文章近似。太不容易了&#xff0c;同时也感谢这篇文章的作者心所欲。 https://www.cnblogs.com/zoujinhua/p/10…

先进车辆驾驶舱系统的强大网络安全协议

近年来&#xff0c;车辆驾驶舱系统发展迅速&#xff0c;融入了导航、娱乐和车辆性能监控系统等先进技术。随着驾驶舱变得更加互联和依赖软件&#xff0c;它们也变得更容易受到网络安全威胁。实施强大的网络安全协议对于保护驾驶员和乘客以及保持车辆运行的完整性至关重要。 本…

springboot124中药实验管理系统设计与实现

简介 【毕设源码推荐 javaweb 项目】基于springbootvue 的中药实验管理系统设计与实现 适用于计算机类毕业设计&#xff0c;课程设计参考与学习用途。仅供学习参考&#xff0c; 不得用于商业或者非法用途&#xff0c;否则&#xff0c;一切后果请用户自负。 看运行截图看 第五章…

书生·浦语大模型--第五节课笔记作业--LMDeploy 大模型量化部署实践

文章目录 大模型部署背景LMDeploy简介动手实践创建环境服务部署在线转换离线转换TurboMind推理API服务Gradio 作为前端 Demo演示TurboMind 服务作为后端TurboMind 推理作为后端 作业 大模型部署背景 部署&#xff1a;将训练好的模型在特定软硬件环境中启动的过程 挑战&#x…

某马头条——day10

热文章数据查询 分布式任务调度xxl-job 概述 环境搭建 docker化部署 docker run -p 3306:3306 --name mysql57 \ -v /opt/mysql/conf:/etc/mysql \ -v /opt/mysql/logs:/var/log/mysql \ -v /opt/mysql/data:/var/lib/mysql \ -e MYSQL_ROOT_PASSWORDroot\ -d mysql:5.7 dock…

255:vue+openlayers 加载tomtom地图(多种形式)

第255个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+openlayers中添加tomtom地图,这里包含了多种形式,诸如中文标记、英文标记、白天地图、晚上地图、卫星影像图,高山海拔地形图等。 直接复制下面的 vue+openlayers源代码,操作2分钟即可运行实现效果 文章目录 示…
最新文章