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
更新不易,希望得到友友的三连支持一波。收藏这篇文章,意味着你将永久拥有它,无论何时何地,都可以立即找到重新阅读;关注博主,意味着无论何时何地,博主将永久和你一起学习进步,为你带来有价值的内容。

相关推荐
晚风醉蝶17 小时前
1-6-插入排序-InsertionSort
java·数据结构·排序算法
Tyler_TXZ17 小时前
C++C语言之——二叉树
c语言·开发语言·数据结构·c++·二叉树
Tisfy17 小时前
LeetCode 3090.每个字符最多出现两次的最长子字符串:二重循环 / 滑动窗口
算法·leetcode·字符串·题解·模拟·双指针·滑动窗口
-dzk-17 小时前
【技巧】LC 136.只出现一次的数字
算法·异或
不会代码的小猴17 小时前
C++新增关键字
开发语言·c++·笔记
专注仿真18 小时前
问答大模型技术方案算法实现-RAPTOR树构建算法与BEG集成使用
python·算法
liulilittle19 小时前
并发与内存安全术语:定义、分类与关联
c++·安全·并发·术语
_wyt00119 小时前
从图到树:9道洛谷基础题带你入门树形结构
c++·
zlinear数据采集卡19 小时前
数据采集卡从入门到精通(10):采样率与分辨率的核心关系——反比律、架构分布与过采样
arm开发·嵌入式硬件·算法·fpga开发·架构·开源
Titan202419 小时前
Linux网络基础知识
linux·服务器·网络·c++·学习