解题思路:

中序遍历的顺序是:左根右。所以需要使用一个栈来存储根节点(每一次push操作时,都相当于把该节点当成根节点了,然后再向其左节点探索)。

程序中的大循环是:!s.empty() || root != NULL。栈非空,说明仍有根节点未被push_back进结果容器中,当栈为空时,说明最后一个根节点(逐个push上的最后一个,是指逻辑顺序上的最后一个)及其左子树的节点均被访问和输出,但其右子树上的节点可能还没被输出。所以要判断当前节点是否为空,即:root != NULL。

循环体内的程序逻辑:当左节点不为空时,一直向左探索,遇到NULL,则将栈顶元素输出,并将当前节点指向其右节点,访问右子树。

class Solution {
public:vector<int> inorderTraversal(TreeNode* root) {vector<int> res;if(root == NULL) return {};stack<TreeNode*> s;while(!s.empty() || root != NULL){ //当栈不为空,或者当前元素不为NULL时while(root != NULL){  //当左节点不为NULL时,一直向左探索s.push(root);root = root->left;}//此时root节点为NULL了root = s.top();s.pop();res.push_back(root->val);root = root->right;}return res;}
};

Leetcode 94. 二叉树的中序遍历 解题思路及C++实现相关推荐

  1. leetcode - 94. 二叉树的中序遍历

    给定一个二叉树,返回它的中序遍历.中序遍历(LDR)是二叉树遍历的一种,也叫做中根遍历.中序周游.在二叉树中,中序遍历首先遍历左子树,然后访问根结点,最后遍历右子树. 示例: 进阶: 递归算法很简单, ...

  2. LeetCode 94. 二叉树的中序遍历(中序遍历)

    文章目录 1. 题目信息 2. 解题 2.1 递归 2.2 循环,必须掌握 1. 题目信息 给定一个二叉树,返回它的中序 遍历. 示例:输入: [1,null,2,3]1\2/3输出: [1,3,2] ...

  3. Leetcode 94.二叉树的中序遍历 (每日一题 20210712)

    给定一个二叉树的根节点 root ,返回它的 中序 遍历.示例 1:输入:root = [1,null,2,3] 输出:[1,3,2] 示例 2:输入:root = [] 输出:[] 示例 3:输入: ...

  4. 力扣(Leetcode)-94. 二叉树的中序遍历

    描述 给定一个二叉树的根节点 root ,返回它的 中序 遍历. 示例 1: 输入:root = [1,null,2,3] 输出:[1,3,2] 示例 2: 输入:root = [] 输出:[] 示例 ...

  5. [leetcode]94.二叉树的中序遍历

    给定一个二叉树的根节点 root ,返回它的 中序 遍历. 示例 1: 输入:root = [1,null,2,3] 输出:[1,3,2] 示例 2: 输入:root = [] 输出:[] 示例 3: ...

  6. leetcode| 94. 二叉树的中序遍历

    ##给定一个二叉树,返回它的中序遍历. 示例: 输入: [1,null,2,3] 1 2 / 3 输出: [1,3,2] 进阶: 递归算法很简单,你可以通过迭代算法完成吗? 栈. 思路 时间复杂度O( ...

  7. LeetCode 94. 二叉树的中序遍历(递归)(迭代)(颜色标记法)

    题目描述 给定一个二叉树,返回它的后序遍历 思路 详见链接 代码 递归 #class TreeNode: # def __init__(self,x): # self.val = x # self.l ...

  8. Leetcode 129求根节点到叶节点数字之和、104二叉树的最大深度、8字符串转换整数(atoi)、82删除排序链表中的重复元素II、204二分查找、94二叉树的中序遍历、144二叉树的前序遍历

    Top1:Leetcode 129求根节点到叶节点数字之和 官方题解:https://leetcode.cn/problems/sum-root-to-leaf-numbers/solution/qi ...

  9. LeetCode-二叉树-94. 二叉树的中序遍历

    描述 94. 二叉树的中序遍历 给定一个二叉树的根节点 root ,返回它的 中序 遍历. 示例 1: 输入:root = [1,null,2,3] 输出:[1,3,2] 示例 2: 输入:root ...

最新文章

  1. 打造完全绿色的TOTAL COMMANDER
  2. 第十天内容《基础交换十》STP优化案例
  3. WordPress在nginx下的URL重写规则
  4. 设计器的使用及常用控件
  5. .Net Core手撸一个基于Token的权限认证
  6. 你知道长颈鹿是怎么睡觉的吗? | 今日趣图
  7. pytorch保存和加载模型state_dict
  8. python计算长方体体积编程_计算体积 编程创建一个Box类(长方体) 联合开发网 - pudn.com...
  9. Nginx 二级子域名完美方案
  10. 为什么钉钉里的图片打开得更快了? | 凌云时刻
  11. VS-c++ 项目新建文件夹
  12. 阿里云 EMAS Serverless 重磅发布
  13. MATLAB阶段性方程组,[转载]matlab 解方程组
  14. 匹配字符串-正则表达式
  15. java.lang.IllegalArgumentException: An operation with name [{X}count] already exists in this service
  16. 网页3D编辑器Stone案例:房地产数字沙盘
  17. 中科院计算机所博士何飞,专家人才库数据----中国科学院计算技术研究所
  18. 小程序解析富文本编辑器中的内容
  19. 常用邮件服务器名(POP3,SMTP地址)
  20. 绝对令人的惊叹的CSS3折叠效果

热门文章

  1. 线性代数第五版吉尔伯特课后答_线性代数同济第五版第四章课后习题答案!
  2. Hadoop记录-metastore jmx配置
  3. 记ThoughtWorks面试失败之旅
  4. 看看,这就是微软的“万物互联”系统 window10 IOT
  5. 如何搭建modem编译环境
  6. Linux内核模块简介
  7. mysql 碎片率_mysql数据碎片太多怎么办?
  8. js添加多个子节点_JS创建DOM节点-使用document.createElement()创建子节点或同级节点...
  9. 455. Assign Cookies - LeetCode
  10. JS组件系列——封装自己的JS组件,你也可以