36 二叉树中序遍历

news2025/1/19 23:27:32

二叉树中序遍历

    • 题解1 递归
    • 题解2 迭代

给定一个二叉树的根节点 root ,返回它的 中序 遍历 。

在这里插入图片描述
提示:

  • 树中节点数目在范围 [0, 100] 内
  • -100 <= Node.val <= 100

进阶: 递归算法很简单,你可以通过迭代算法完成吗?

题解1 递归

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
 *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
 *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
 * };
 */
class Solution {
public:
    vector<int> finalR;
    void inorder(TreeNode* root){
        if(! root) return;

        inorder(root->left);
        finalR.push_back(root->val);
        inorder(root->right);
    }
    vector<int> inorderTraversal(TreeNode* root) {
        if(! root ) return vector<int>();
        inorder(root);
        return finalR;
    }
};

在这里插入图片描述

题解2 迭代

class Solution {
public:
    vector<int> finalR;
    vector<int> inorderTraversal(TreeNode* root) {
        if(! root ) return vector<int>();
        // 弹栈符合中序遍历顺序
        stack<TreeNode*> kk;
        TreeNode* Lroot = root;
        while(Lroot){
            kk.push(Lroot);
            Lroot = Lroot->left;
        }
        while(kk.size()){
            auto k = kk.top();
            finalR.emplace_back(k->val);
            kk.pop();
            // 对每个点查右结点
            //(不需要再考虑左结点,因为此时该点左侧的点都已经检查完了)
            if(k->right){
                k = k->right;
                // 依旧是先左
                while(k){
                    kk.push(k);
                    k = k->left;
                }
            }
        }

        return finalR;
    }
};

在这里插入图片描述

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

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

相关文章

Python绘图系统23:导入多个坐标轴的数据

文章目录 单轴导入多轴导入多文件导入合并导入源代码 Python绘图系统&#xff1a; 前置源码&#xff1a; Python打造动态绘图系统&#x1f4c8;一 三维绘图系统 &#x1f4c8;二 多图绘制系统&#x1f4c8;三 坐 标 轴 定 制&#x1f4c8;四 定制绘图风格 &#x1f4c8;五 数据…

第一章 数据可视化和matplotlib

Python数据可视化 第一章 数据可视化和matplotlib 1.数据可视化概述 1.1.什么是数据可视化 ​ 数据可视化旨在借助图形化的手段&#xff0c;将一组数据以图形的形式表示&#xff0c;并利用数据分析和开发工具发现其中未知信息的处理过程。 ​ 数据可视化发展历史 ​ 可视化…

Spring IOC容器实例化Bean整体流程图

SpringBean实例化的基本流程-CSDN博客 Spring容器中的BeanDefinitionReader读取器&#xff0c;读取xml配置文件&#xff0c;解析每一个bean标签&#xff0c;将bean标签中信息封装到BeanDefinition对象中&#xff0c;该对象的集合存储到BeanDefinitionMap中&#xff0c;然后Spri…

Cocos Creator3.8 实战问题(三)去除scrollview背景色和label 对齐方式设置无效问题

1、 scrollview 默认背景是白色的&#xff0c; 我们不想要 scrollview 默认的背景颜色&#xff0c;怎么办&#xff1f; 设置 scrollview的color为透明吗&#xff1f; 不对&#xff0c;这会导致 view节点完全透明。 解决方法&#xff1a;直接删除scrollview 的Spritre frame就…

船用低速发动机缸压在线监测系统

LabVIEW开发船用低速发动机缸压在线监测系统 船用发动机结构复杂&#xff0c;部件相互连接&#xff0c;运行环境恶劣&#xff0c;使其更容易发生故障。如果船用发动机发生故障或工作状态不佳&#xff0c;将增加造成经济损失和威胁船舶安全的机。为了减少故障的发生&#xff0c…

【Kettle】Kettle部署与运行

一、部署 1.安装java 此处安装openjdk1.8&#xff0c;可用yum、apt、源码等方式安装&#xff0c;具体安装方式略。 2.安装kettle 1.下载 https://www.hitachivantara.com/en-us/products/pentaho-platform/data-integration-analytics/pentaho-community-edition.html 此…

Unity中UI Shader遮罩RectMask2D

文章目录 前言一、需要定义一个变体UNITY_UI_CLIP_RECTUNITY_UI_CLIP_RECT 二、需要申明一个_ClipRect,这是使用上面这个变体需要使用的&#xff0c;这个属性并没有在Properties声明1、现在我们用简单的代码测试一下 _ClipRect 的使用然后我们基于以上的基础&#xff0c;让 内层…

二、局域网联机

目录 1.下载资源包 2.配置NetworkManager 3.编写测试UI 1.下载资源包 2.配置NetworkManager &#xff08;1&#xff09;在Assets/Prefabs下创建Network Prefabs List 相应设置如下&#xff1a; &#xff08;2&#xff09; 创建空物体“NetworkManager”并挂载NetworkMan…

MySQL数据库——索引(5)-索引使用(上),验证索引效率、最左前缀法则、范围查询、索引失效情况、SQL提示

目录 索引使用 验证索引效率 最左前缀法则 范围查询 索引失效情况 索引列运算 字符串不加引号 模糊查询 or连接条件 数据分布影响 SQL提示 use index ignore index force index 索引使用&#xff08;上&#xff09; 验证索引效率 在讲解索引的使用原则之前&…

c语言常用语法,长时间不用容易忘。

关键字 auto 声明自动变量const 定义常量&#xff0c;如果一个变量被 const 修饰&#xff0c;那么它的值就不能再被改变extern 声明变量或函数是在其它文件或本文件的其他位置定义register 声明寄存器变量signed 声明有符号类型变量或函数static 声明静态变量&#xff0c;修饰…

毅速课堂:3D打印随形水路在小零件注塑中优势明显

小零件注塑中的冷却不均匀问题常常导致烧焦现象的发生。这主要是因为传统机加工方法无法制造出足够细小的水路&#xff0c;以适应小零件的复杂形状。而3D打印技术的引入&#xff0c;尤其是随形水路的设计&#xff0c;为解决这一问题提供了新的解决方案。 3D打印随形水路技术的优…

3.canvas绘制基本图形——圆弧

圆弧是圆的组成部分&#xff0c;一个圆可以看成多个圆弧或者一个圆弧闭环组合而成。因此我们画圆弧的时候往往把他看成一个残缺的圆 arc arc是最基础最简单的圆弧绘制方法。 他有六个参数 参数一跟参数二表示圆的圆心坐标 参数三是圆的半径 参数四是圆开始的角度 参数五是圆结…

No module named ipykernel解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

HTML的相关知识

1.什么是HTML&#xff1f;基本语法 HTML: Hyper Text Markup Language &#xff08;超文本标记语言&#xff09; 超文本&#xff1f;超级文本&#xff0c;例如流媒体&#xff0c;声音、视频、图片等。 标记语言&#xff1f;这种语言是由大量的标签组成。HTML标签参考手…

单目标应用:基于沙丁鱼优化算法(Sardine optimization algorithm,SOA)的微电网优化调度MATLAB

一、沙丁鱼优化算法 沙丁鱼优化算法(Sardine optimization algorithm,SOA)由Zhang HongGuang等人于2023年提出&#xff0c;该算法模拟沙丁鱼的生存策略&#xff0c;具有搜索能力强&#xff0c;求解精度高等特点。 沙丁鱼主要以浮游生物为食&#xff0c;这些生物包括细菌、腔肠…

SpringBoot整合RabbitMQ实现延迟队列功能

&#x1f468;&#x1f3fb;‍&#x1f4bb; 热爱摄影的程序员 &#x1f468;&#x1f3fb;‍&#x1f3a8; 喜欢编码的设计师 &#x1f9d5;&#x1f3fb; 擅长设计的剪辑师 &#x1f9d1;&#x1f3fb;‍&#x1f3eb; 一位高冷无情的编码爱好者 大家好&#xff0c;我是 DevO…

AOP 编程

目录 ​编辑一、AOP 编程 1、AOP 概念 2、AOP 编程的开发步骤 3、切面的名词解释 二、AOP 的底层实现原理 1、核心问题 2、动态代理类的创建 &#xff08;1&#xff09;JDK 的动态代理创建 &#xff08;2&#xff09;CGlib 的动态代理 &#xff08;3&#xff09;总结…

[红明谷CTF 2021]write_shell %09绕过过滤空格 ``执行

目录 1.正常短标签 2.短标签配合内联执行 看看代码 <?php error_reporting(0); highlight_file(__FILE__); function check($input){if(preg_match("/| |_|php|;|~|\\^|\\|eval|{|}/i",$input)){ 过滤了 木马类型的东西// if(preg_match("/| |_||php/&quo…

设计模式5、原型模式 Prototype

解释说明&#xff1a;使用原型实例指定待创建对象的类型&#xff0c;并且通过复制这个原型阿里创建型的对象 UML 结构图&#xff1a; 抽象原型&#xff08;Prototype&#xff09;&#xff1a;规定了具体原型对象必须实现的clone()方法 具体原型&#xff08;ConcretePrototype&…

CVE-2023-5129 libwebp堆缓冲区溢出漏洞影响分析

漏洞简述 近日苹果、谷歌、Mozilla和微软等公司积极修复了libwebp组件中的缓冲区溢出漏洞&#xff0c;相关时间线如下&#xff1a; 9月7日&#xff0c;苹果发布紧急更新&#xff0c;修复了此前由多伦多大学公民实验室报告的iMessage 0-click 漏洞&#xff0c;漏洞被认为已经被…