您的位置:首页 > 科技 > 能源 > 开通企业邮箱要钱吗_石家庄展华贸易有限公司网页制作_个人如何建立免费网站_平台推广

开通企业邮箱要钱吗_石家庄展华贸易有限公司网页制作_个人如何建立免费网站_平台推广

2025/4/21 18:37:52 来源:https://blog.csdn.net/weixin_61695887/article/details/147349838  浏览:    关键词:开通企业邮箱要钱吗_石家庄展华贸易有限公司网页制作_个人如何建立免费网站_平台推广
开通企业邮箱要钱吗_石家庄展华贸易有限公司网页制作_个人如何建立免费网站_平台推广

目录

一、问题描述

二、解题思路

三、代码

四、复杂度分析


一、问题描述

给定一个二叉树的根节点 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))

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com