LeetCode —— 94. 二叉树的中序遍历


😶‍🌫️😶‍🌫️😶‍🌫️😶‍🌫️Take your time ! 😶‍🌫️😶‍🌫️😶‍🌫️😶‍🌫️

💥个人主页:🔥🔥🔥大魔王🔥🔥🔥

💥所属专栏:🔥魔王的修炼之路--力扣🔥
如果你觉得这篇文章对你有帮助,请在文章结尾处留下你的点赞 👍和关注 💖,支持一下博主。同时记得收藏✨这篇文章,方便以后重新阅读。

94. 二叉树的中序遍历

94. 二叉树的中序遍历

题目:94. 二叉树的中序遍历

c 复制代码
/**
 * 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:
//     void inorder(TreeNode* root, vector<int>& v)
//     {
//         if(root == nullptr)
//             return;
//         inorder(root->left, v);
//         v.push_back(root->val);
//         inorder(root->right, v);
//     }
//     vector<int> inorderTraversal(TreeNode* root) {
//         vector<int> v;
//         inorder(root, v);
//         return v;
//     }
// };

// 方法二(非递归):先不访问根,压根,不管右节点,一直往左走,直到空,然后访问栈的根,然后去走根的右子树
class Solution {
public:
    vector<int> inorderTraversal(TreeNode* root) {
        stack<TreeNode*> st;
        vector<int> v;
        TreeNode* cur = root;
        while(cur != nullptr || !st.empty())
        {
            if(cur == nullptr)
            {
                cur = st.top();
                v.push_back(cur->val);
                cur = cur->right;//右子树非空走的是右子树;右子树为空再次循环时再次取栈的top
                st.pop();
            }
            else
            {
                st.push(cur);
                cur = cur->left;
            }
        }
        return v;
    }
};
  • 博主长期更新,博主的目标是不断提升阅读体验和内容质量,如果你喜欢博主的文章,请点个赞或者关注博主支持一波,我会更加努力的为你呈现精彩的内容。

🌈专栏推荐
😈魔王的修炼之路--C语言
😈魔王的修炼之路--数据结构
😈魔王的修炼之路--C++
😈魔王的修炼之路--QT
😈魔王的修炼之路--算法
😈魔王的修炼之路--力扣
😈魔王的修炼之路--牛客
😈魔王的修炼之路--剑指offer
😈魔王的修炼之路--Linux
更新不易,希望得到友友的三连支持一波。收藏这篇文章,意味着你将永久拥有它,无论何时何地,都可以立即找到重新阅读;关注博主,意味着无论何时何地,博主将永久和你一起学习进步,为你带来有价值的内容。

相关推荐
un_fired8 分钟前
【leetcode刷题日记】lc.78-子集
算法·leetcode
胖大和尚13 分钟前
Linux C++ xercesc xml 怎么判断路径下有没有对应的节点
xml·linux·c++
LIUDAN'S WORLD14 分钟前
第 2.3 节: 基于 Python 的关节空间与任务空间控制
人工智能·python·算法
achene_ql16 分钟前
缓存置换:用c++实现最不经常使用(LFU)算法
c++·算法·缓存
jiunian_cn17 分钟前
【c++】【STL】queue详解
开发语言·c++·visualstudio
尽兴-18 分钟前
缓存分片哈希 vs 一致性哈希:优缺点、区别对比及适用场景(图示版)
算法·缓存·哈希算法
achene_ql38 分钟前
C++ 与 Lua 联合编程
开发语言·c++·lua
CodeWithMe1 小时前
【中间件】brpc_基础_bthread头文件
c++·中间件·rpc
哈全网络1 小时前
如何使用 DeepSeek 帮助自己的工作?
人工智能·算法·ai编程·ai写作
weniry2 小时前
动态库与静态库的区别
开发语言·c++