用栈记录走过的位置,当遇到NULL结点时,用栈pop进行回溯

//回溯到父节点后,应该马上进入父结点的 右结点,这样就可以避免重复进入左结点

(相当于递归回到当前层的时候,只是继续执行上次剩下没执行的语句,而不是把当前层的所有代码都执行一遍)

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode(int x) : val(x), left(NULL), right(NULL) {}* };*/
class Solution {
public:vector<int> inorderTraversal(TreeNode* root) {vector<int> ans;stack<TreeNode*> s;TreeNode* p=root;while(p || !s.empty()){if(p){s.push(p);p=p->left;}else{ //回到父节点后,马上进入父结点的 右结点p = s.top();ans.push_back(p->val);s.pop();p=p->right;}}return ans;}
};

94. 二叉树的中序遍历(迭代)相关推荐

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

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

  2. 94. 二叉树的中序遍历-M

    94. 二叉树的中序遍历 label: 非递归中序遍历,LNR,字节跳动面试题 给定一个二叉树,返回它的中序 遍历. 示例: 输入: [1,null,2,3] 1\2/3 输出: [1,3,2] 进阶 ...

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

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

  4. 94. 二叉树的中序遍历

    94. 二叉树的中序遍历 难度中等902收藏分享切换为英文接收动态反馈 给定一个二叉树的根节点 root ,返回它的 中序 遍历. 示例 1: 输入:root = [1,null,2,3] 输出:[1 ...

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

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

  6. LeetCode 92反转链表Ⅱ93复制ip地址94二叉树的中序遍历

    微信搜一搜:bigsai 专注于Java.数据结构与算法,一起进大厂不迷路! 算法文章题解全部收录在github仓库bigsai-algorithm,求star! 关注回复进群即可加入力扣打卡群,欢迎 ...

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

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

  8. Leetcode--94. 二叉树的中序遍历(迭代递归)

    给定一个二叉树,返回它的中序 遍历. 示例: 输入: [1,null,2,3]    1     \      2     /    3 输出: [1,3,2] 代码: 迭代: /** * Defin ...

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

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

最新文章

  1. Linux 下的KILL函数的用法
  2. Nginx配置之基于域名的虚拟主机
  3. [SHOI2014] 概率充电器
  4. mysql创建表时反引号的作用
  5. 第一部分Calendar介绍
  6. 分布式数据库中间件的实现原理介绍一:分库分表【转】
  7. 小D课堂 - 新版本微服务springcloud+Docker教程_1_02技术选型
  8. cocos2d-基本概念(5)-Effects 效果
  9. 接口(Api)版本号命名规则
  10. 【异常解决】DolphinScheduler-2.0.5 工作流实例无法调度和停止异常
  11. android怎样开启root权限管理,【经验】安卓手机怎么开启Root权限?
  12. CSSCI来源期刊(2010-2011年)
  13. 【机器翻译】《Gradient-guided Loss Masking for Neural Machine Translation》论文总结
  14. Kotlin-Android世界的一股清流-函数
  15. Linux whoami和who am i命令用法和区别
  16. 真无线蓝牙耳机盘点,2020新款游戏低延迟高续航蓝牙耳机
  17. java 操作execl添加边框
  18. 循环-菲波那切数列II
  19. go使用viper读取配置参数热加载
  20. SpringBoot启动图标修改

热门文章

  1. Python模拟微博登陆,亲测有效!
  2. 不服来战!多伦多大学教授500美元挑战整个机器学习圈子
  3. 公司用的 MySQL 团队开发规范
  4. Spring Boot 启动时,让方法自动执行的 4 种方法!
  5. 从零开始写一个迷你版的Tomcat
  6. 还在担心写的一手烂SQL,送你4款工具
  7. Pytorch Lightning 完全攻略!
  8. Datawhale Ring限量100份来了!
  9. 如何高性价比地构建GPU环境,实现GPU自由?
  10. NeurIPS 2020 Oral 论文讲解