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

94. 二叉树的中序遍历

目录

一、问题描述

二、解题思路

三、代码

四、复杂度分析


一、问题描述

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

二、解题思路

  • 定义一个结果数组 result

  • 从根节点开始,用递归方式先访问左子树

  • 左子树返回后,将当前节点加入结果

  • 然后再递归访问右子树

三、代码

/**
 * 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> inorderTraversal(TreeNode* root) {
        vector<int> result;                  // 用来存储中序遍历结果
        inorder(root, result);              // 调用递归函数
        return result;
    }

private:
    void inorder(TreeNode* node, vector<int>& result) {
        if (!node) return;                  // 如果节点为空,直接返回
        inorder(node->left, result);        // 先递归遍历左子树
        result.push_back(node->val);        // 再访问当前节点
        inorder(node->right, result);       // 最后递归遍历右子树
    }
};

四、复杂度分析

时间复杂度:O(n)

  • 每个节点都会被访问一次,无论是左子树、当前节点、还是右子树。

  • 所以时间复杂度为 O(n),其中 n 是树中的节点总数。


🧠 空间复杂度:

▶ 最好情况(平衡二叉树):
  • 递归调用栈的最大深度是树的高度 h = log(n),空间复杂度为 O(log n)

▶ 最坏情况(完全退化为链表):
  • 递归调用栈会到达 n 层,空间复杂度为 O(n)

✅ 最终空间复杂度总结:

空间复杂度 = 递归调用栈 O(h) + 结果数组 O(n)
所以是:O(n) 总体空间复杂度(不论递归深度如何,最终结果数组都要 O(n))

http://www.xdnf.cn/news/34039.html

相关文章:

  • Simulink中建立交流单项永磁同步电机模型教程
  • python——列表和元组
  • 深入剖析 HashMap:内部结构与性能优化
  • Linux——进程概念
  • 网络开发基础(游戏)之 Socket API
  • [Java EE] Spring 配置 和 日志
  • 代码随想录训练营第35天 || 01背包问题 416. 分割等和子集
  • Vue基础(6)_键盘事件
  • 玛哈特整平机:工业制造中的关键设备
  • Java 动态代理实现
  • Python scikit-learn 机器学习算法实践
  • 【每天一个知识点】模式识别
  • MySQL进阶-存储过程-变量语法结构
  • C++用于保留浮点数的两位小数,使用宏定义方法(可兼容低版本Visual Studio)
  • JZ8P1533 充电型数字可编程控制器
  • 200+短剧出海平台:谁能成为“海外红果”?
  • 电脑端移植至手机平板:攻克难题,仙盟架构显神通——仙盟创梦IDE
  • 2025.04.19-阿里淘天春招算法岗笔试-第二题
  • 在RK3588上使用SRS流媒体服务器
  • kafka集群认证
  • NumPy 核心指南:零基础入门与实践
  • 商标起名换了暗示词,通过初审!
  • 边生成边训练:构建合成数据驱动的在线训练系统设计实战
  • XMind 下载指南
  • 基于autoware.1.14与gazebo联合仿真进行全局规划高精地图版
  • 可穿戴经颅多通道直流电刺激产品测试总结
  • 16、堆基础知识点和priority_queue的模拟实现
  • 为什么 waitress 不支持 WebSocket?
  • PyTorch源码编译报错“fatal error: numpy/arrayobject.h: No such file or directory”
  • SEO长尾关键词优化实战