二叉树的中序遍历 LeetCode热题100

题目

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

思路

递归,按左中右的顺序添加节点。

利用栈先进后出的特性模拟递归。

代码

cpp 复制代码
/**递归写法
 * 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>ans;
    void InorderTraversal(TreeNode* node){
        if(node==nullptr){
            return ;
        }
        InorderTraversal(node->left);
        ans.push_back(node->val);
        InorderTraversal(node->right);
    }
    vector<int> inorderTraversal(TreeNode* root) {
        ans.clear();
        InorderTraversal(root);
        return ans;
    }
};
cpp 复制代码
/**栈优化
 * 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>ans;
        ans.clear();    
        stack<TreeNode*>st;
        while(!st.empty()){
            st.pop();
        }
        while(root!=nullptr||!st.empty()){
            while(root){
                st.push(root);
                root=root->left;
            }
            root=st.top();
            ans.push_back(root->val);
            st.pop();
            root = root->right;
        }
        return ans;
    }
};
相关推荐
在未来等你1 分钟前
Elasticsearch面试精讲 Day 12:数据建模与字段类型选择
大数据·分布式·elasticsearch·搜索引擎·面试
a5876930 分钟前
消息队列(MQ)初级入门:详解RabbitMQ与Kafka
java·分布式·microsoft·面试·kafka·rabbitmq
先做个垃圾出来………1 小时前
差分数组(Difference Array)
java·数据结构·算法
hansang_IR1 小时前
【题解】洛谷 P4286 [SHOI2008] 安全的航线 [递归分治]
c++·数学·算法·dfs·题解·向量·点积
乐迪信息1 小时前
乐迪信息:AI摄像机在智慧煤矿人员安全与行为识别中的技术应用
大数据·人工智能·算法·安全·视觉检测
多恩Stone2 小时前
【3DV 进阶-2】Hunyuan3D2.1 训练代码详细理解下-数据读取流程
人工智能·python·算法·3d·aigc
小林coding2 小时前
再也不怕面试了!程序员 AI 面试练习神器终于上线了
前端·后端·面试
wjm0410062 小时前
ios面试八股文
ios·面试
知其然亦知其所以然2 小时前
面试官微笑发问:第100万页怎么查?我差点当场沉默…
后端·mysql·面试
惯导马工3 小时前
【论文导读】IDOL: Inertial Deep Orientation-Estimation and Localization
深度学习·算法