当前位置: 首页 > news >正文

力扣 二叉树遍历 中序/前序/后序(递归和迭代版)

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

示例 1:

输入:root = [1,null,2,3]
输出:[1,3,2]

示例 2:

输入:root = []
输出:[]

示例 3:

输入:root = [1]
输出:[1]

提示:

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

代码:中序用递归来实现

class Solution {

public:

    void inorder(TreeNode *root,vector<int>& res){

        if(!root){

            return;

        }

        inorder(root->left,res);

        res.push_back(root->val);

        inorder(root->right,res);

    }

    vector<int> inorderTraversal(TreeNode* root) {

        vector<int> res;

        inorder(root,res);

        return res;

    }

};

前序迭代版:用栈来实现

class Solution {

public:

    vector<int> preorderTraversal(TreeNode* root) {

        vector<int> res;

        stack<TreeNode *> s;

        s.push(root);

        while(!s.empty()){

            TreeNode *tmp = s.top();

            s.pop();

            if(!tmp) continue;

            res.push_back(tmp->val);

            s.push(tmp->right);

            s.push(tmp->left);

        }

        return res;

   }

};

前序遍历递归版:

class Solution {

public:

    void frontorder(TreeNode *root,vector<int>& res)

    {

        if(!root)return;

        res.push_back(root->val);

        frontorder(root->left,res);

        frontorder(root->right,res);

    }

    vector<int> preorderTraversal(TreeNode* root) {

        vector<int> res;

        frontorder(root,res);

        return res;

   }

};

后序递归版:

class Solution {

public:

    void beheadorder(TreeNode *root,vector<int>& res)

    {

        if(!root) return;

        beheadorder(root->left,res);

        beheadorder(root->right,res);

        res.push_back(root->val);

    }

    vector<int> postorderTraversal(TreeNode* root) {

        vector<int> res;

        beheadorder(root,res);

        return res;

    }

};

http://www.lryc.cn/news/607955.html

相关文章:

  • Dify 从入门到精通(第 10/100 篇):使用 Dify 工具集扩展功能
  • 测试环境 PostgreSQL 库连接不上—案例分享
  • 设计Mock华为昇腾GPU的MindSpore和CANN的库的流程与实现
  • 音视频学习(四十六):声音的三要素
  • 【故障处理】redis会话连接满导致业务系统某个模块数据不显示
  • 【Flutter3.8x】flutter从入门到实战基础教程(八):公共state的集中管理机制
  • Kafka——关于Kafka动态配置
  • LeetCode 65:有效数字
  • OSPF综合实验(一)
  • 如何在 Ubuntu 24.04 或 22.04 LTS Linux 上安装 Guake 终端应用程序
  • 切换python多版本
  • Spring 中 Bean 的生命周期
  • 机器学习sklearn:聚类
  • 深入 Go 底层原理(四):GMP 模型深度解析
  • 深入 Go 底层原理(八):sync 包的实现剖析
  • 中科院自动化所机器人视觉中的多模态融合与视觉语言模型综述
  • Python 程序设计讲义(54):Python 的函数——函数概述
  • Java 集合框架: LinkedHashSet
  • innoDB的buffer pool
  • API征服者:Python抓取星链卫星实时轨迹
  • k8s集群部署(脚本版)
  • 【CVPR2025】计算机视觉|即插即用|GCNet:炸裂!实时语义分割新星GCNet,性能速度双突破!
  • 前端应用权限设计面面观
  • JVM中的垃圾回收暂停是什么,为什么会出现暂停,不同的垃圾回收机制暂停对比
  • 题解:P4447 [AHOI2018初中组] 分组
  • rabbitmq消息队列详述
  • python创建一个excel文件
  • PHP 与 MySQL 详解实战入门(2)
  • Removing Digits(Dynamic Programming)
  • 【第三章】变量也疯狂:深入剖析 Python 数据类型与内存原理