每日一题——二叉树的遍历

题目


给你二叉树的根节点 root ,返回它节点值的 前序(中序、后序) 遍历。

数据范围:二叉树的节点数量满足 1≤n≤100 ,二叉树节点的值满足 1≤val≤100 ,树的各节点的值各不相同。

思路


二叉树的前序遍历就是按照“根左右”(中序是“左根右”,后序是“左右根”)的顺序访问其所有节点。可以使用递归的方法:对每个子树的访问,可以看成对于上一级树的子问题,终止条件是节点为空。

解答代码


  • 前序遍历:
/*** struct TreeNode {*	int val;*	struct TreeNode *left;*	struct TreeNode *right;*	TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}* };*/
class Solution {
public:/*** @param root TreeNode类 * @return int整型vector*/void preorder(TreeNode* node, vector<int>& ret) {if (node == nullptr) {return;}// 根节点ret.emplace_back(node->val);// 左子树preorder(node->left, ret);// 右子树preorder(node->right, ret);}vector<int> preorderTraversal(TreeNode* root) {// write code herevector<int> ret;// 递归调用前序遍历preorder(root, ret);return ret;}
};
  • 中序遍历
/*** struct TreeNode {*	int val;*	struct TreeNode *left;*	struct TreeNode *right;*	TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}* };*/
class Solution {
public:/*** @param root TreeNode类 * @return int整型vector*/void inorder(TreeNode* node, vector<int>& ret) {if (node == nullptr) {return;}// 左子树inorder(node->left, ret);// 根节点ret.emplace_back(node->val);// 右子树inorder(node->right, ret);}vector<int> inorderTraversal(TreeNode* root) {// write code herevector<int> ret;// 递归调用中序遍历inorder(root, ret);return ret;}
};
  • 后序遍历
/*** struct TreeNode {*	int val;*	struct TreeNode *left;*	struct TreeNode *right;*	TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}* };*/
class Solution {
public:/*** @param root TreeNode类 * @return int整型vector*/void postorder(TreeNode* node, vector<int>& ret) {if (node == nullptr) {return;}// 左子树postorder(node->left, ret);// 右子树postorder(node->right, ret);// 根节点ret.emplace_back(node->val);}vector<int> postorderTraversal(TreeNode* root) {// write code herevector<int> ret;// 递归调用后序遍历postorder(root, ret);return ret;}
};

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

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

相关文章

C# 中使用ValueTask优化异步方法

概要 我们在开发过程中&#xff0c;经常使用async的异步方法&#xff0c;但是有些时候&#xff0c;异步的方法中&#xff0c;可能包含一些同步的处理。本文主要介绍通过ValueTask这个struct&#xff0c;优化异步处理的方法性能。 代码及实现 有些时候我们会缓存一些数据在内…

记一次Oracle归档日志异常增长问题的排查过程

Oracle归档日志是Oracle数据库的重要功能&#xff0c;用于将数据库的重做日志文件&#xff08;Redo Log&#xff09;保存到归档日志文件&#xff08;Archive Log&#xff09;中。归档日志的作用是提供数据库的备份和恢复功能&#xff0c;以及支持数据库的持续性和数据完整性。 …

Vue+Element Plus 初始化

1. 初始化 Vue 项目 创建vue3 项目 vue create k8s-platform-fe 2. 引入 Element Plus 安装 element-plus 首先去安装这些依赖包&#xff0c;安装好了将其引入&#xff0c;引入的方式有全局引用和局部引入。其实和组件是一样的&#xff0c;局部引入哪里引入哪里使用。…

接口测试和功能测试的区别

我们分成两个部分来讲&#xff1a; 第一部分&#xff1a;主要从问题出发&#xff0c;引入接口测试的相关内容并与前端测试进行简单对比&#xff0c;总结两者之前的区别与联系。但该部分只交代了怎么做和如何做&#xff1f;并没有解释为什么要做&#xff1f; 第二部分&#xf…

mac安装nvm

如果安装过node&#xff0c;须得卸载 sudo npm uninstall npm -gsudo rm -rf /usr/local/lib/node /usr/local/lib/node_modules /var/db/receipts/org.nodejs.*sudo rm -rf /usr/local/include/node /Users/$USER/.npmsudo rm /usr/local/bin/nodesudo rm /usr/local/share/m…

nginx rtmp http_flv直播推流

安装配置nginx yum install epel-release -y sudo rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-5.el7.nux.noarch.rpm yum install ffmpeg ffmpeg-devel -y yum install gcc -y yum install pcre pcre-devel -y yum install openssl open…

Wireshark抓包分析TCP协议:三次握手和四次挥手

01、前言 面试中我们经常会被问到TCP协议的三次握手和四次挥手的过程&#xff0c;为什么总喜欢问这个问题呢&#xff1f; 其实我们平时使用的很多协议都是应用层协议&#xff0c;比如HTTP协议&#xff0c;https协议&#xff0c;DNS协议&#xff0c;FTP协议等&#xff1b;而应…

Google OAuth 2 authorization - Error: redirect_uri_mismatch 400

出现这个问题&#xff0c;一般是因为google授权origin地址和重定向redirect_uri地址没有匹配上。 请仔细检查重定向地址的url中origin部分和授权origin部分是否能够匹配&#xff1a;

kubeadm一键部署K8S流程

-架构设计&#xff1a; k8s部署&#xff1a;&#xff08;masternode1node2&#xff09; master.com:192.168.17.144 node1.com:192.168.17.146 node2.com:192.168.17.148 master上部署&#xff1a; etcd&#xff08;数据库&#xff09;、kube-apiserver、kube-controller-mana…

Android屏幕像素密度

有时需要为视图属性指定大小尺寸值&#xff08;通常以像素为单位&#xff0c;有时也用点、毫米或英寸&#xff09;。一些常见的属性包括文字大小&#xff08;text size&#xff09;、边距&#xff08;margin&#xff09;以及内边距&#xff08;padding&#xff09;。文字大小指…

美容店预约小程序制作教程详解

现在&#xff0c;制作一个专属于美容店的预约小程序不再需要编程经验&#xff0c;通过乔拓云网提供的后台管理系统&#xff0c;你可以轻松地完成整个制作过程。下面&#xff0c;我将为你详细介绍如何DIY一个美容店预约小程序。 首先&#xff0c;登录乔拓云网的后台管理系统&…

html学习5(表单)

1、表单是一个包含表单元素的区域&#xff0c;用于收集用户的输入信息。 2、表单元素是允许用户在表单中输入内容&#xff0c;比如&#xff1a;文本域&#xff08;textarea&#xff09;、下拉列表&#xff08;select&#xff09;、单选框&#xff08;radio-buttons&#xff09…

#rust taur运行报错#

场景:在window11系统上运行 tauri桌面莹应用&#xff0c;提示错误。 Visual Studio 2022 生成工具 安装的sdk11 , rust运行模式是stable-x86_64-pc-window-gnu&#xff0c; 运行npm run tauir dev 一致失败&#xff0c;失败信息如下 原因&#xff1a;1&#xff1a;在window11系…

推理加速 --- torch.compile

推理加速-- torch.compile 一、背景介绍1.2 首次推理速度慢1.3 推理多次之后&#xff0c;又会出现一次速度特别慢的情况&#xff0c;感觉好像是重新优化 二、如何使用三、其他设置3.1 mode 设置3.2 backend3.3 fullgraph3.4 dynamic 参考资料 一、背景介绍 PyTorch 2.0 官宣了…

银行网络安全体系发展及趋势思考

随着数字经济的快速发展&#xff0c;我国银行业务服务模式与技术架构发生了深刻变革。尤其在数字化转型背景下&#xff0c;网络安全作为保障银行业务稳定连续运行的基础&#xff0c;正面临更大的挑战。 银行网络安全体系与银行技术、业务架构密切相关&#xff0c;先后经历了分…

vue使用mqtt服务端实现即时通讯

npm install mqtt3.0.0注意要指定下载3.0.0版本 // 引入MQTT const mqtt require(mqtt/dist/mqtt.js) // 声明client data(){return {client: null} } //方法 //连接服务器connect() {let options {username: "xxx",password: "xxxx",cleanSession : fa…

二阶段web基础与http协议

dns与域名 网络是基于tcp/ip协议进行通信和连接的 应用层-----传输层-----网络层-----数据链路层-----物理层 ip地址&#xff0c;每一台主机都有一个唯一的地址标识&#xff08;固定的ip地址&#xff09; 1.区分用户和计算机 2.通信 ip地址的问题在于32位二进制数组成的&…

触发器实现海豚调度失败企业微信自动告警

原理 触发器监控工作流实例表&#xff0c;当工作流实例表中的状态更新后&#xff0c;针对状态为失败的任务进行企业微信告警。 发送企业微信消息函数 # 必须在pg的主机上线安装requests模块 pip install requests # 以postgres用户登陆psql客户端到etl数据库 psql etl -U po…

ClickHouse的安装启动

安装步骤 1.关闭防火墙 2.修改资源限制配置文件 2.1 路径&#xff1a;/etc/security/limits.conf 在末尾添加&#xff1a; * soft nofile 65536 #任何用户可以打开的最大的文件描述符数量&#xff0c;默认1024 这里的设置会限制tcp连接数 * hard nofile 65536 * soft nproc…

express学习笔记3 - 三大件

便于统一管理router&#xff0c;创建 router 文件夹&#xff0c;创建 router/index.js&#xff1a; const express require(express)// 注册路由 const router express.Router() router.get(/,function(req,res){res.send(让我们开始express之旅) }) /*** 集中处理404请求的…