问题来源与描述

问题来源:LeetCode 94,二叉树的中序遍历

思路

二叉树的中序遍历顺序是左,根,右。
使用递归比较简单:

class Solution {public List<Integer> inorderTraversal(TreeNode root) {List<Integer> res = new LinkedList<>();inorder(res, root);return res;}public void inorder(List<Integer> res, TreeNode root) {if (root == null) return;inorder(res, root.left);res.add(root.val);inorder(res, root.right);}
}

非递归的思路是用一个栈,两个while循环,节点非空则入栈,并将其左孩子,左孩子的左孩子,左孩子的左孩子的左孩子。。。入栈,出栈时,记录下当前节点的值,如果有右孩子,则指针指向右孩子,循环,同上,将左孩子入栈。

class Solution {public List<Integer> inorderTraversal(TreeNode root) {List<Integer> res = new LinkedList<>();Deque<TreeNode> stack = new LinkedList<>();TreeNode temp = root;while (temp != null || !stack.isEmpty()) {while (temp != null) {stack.push(temp);temp = temp.left;}temp = stack.pop();res.add(temp.val);temp = temp.right;}return res;}
}

二叉树中序遍历非递归Java相关推荐

  1. 二叉树(中序遍历)非递归

    为什么80%的码农都做不了架构师?>>>    #include <iostream> #include <stack> /* run this progra ...

  2. Java 二叉树中序遍历(递归/非递归)

    Java 二叉树中序遍历(递归/非递归) 中序遍历 代码实现 递归方式 非递归方式 简介: 遍历是对树的一种最基本的运算,所谓遍历二叉树,就是按一定的规则和顺序走遍二叉树的所有结点,使每一个结点都被访 ...

  3. 二叉树中序遍历非递归算法实现详解

    二叉树是数据结构中的经典结构,也是应用很广泛的结构之一.二叉树具有一些特定的性质,如 n0 = n2+1,在一些应用中,常常要求在树中查找具有某些特征的节点,或者对树中节点进行处理,即遍历二叉树的问题 ...

  4. 二叉树后序遍历(非递归)

    原文地址为: 二叉树后序遍历(非递归) 二叉树的递归遍历算法就不用说了:在非递归算法中,后序遍历难度大,很多书上只给出思想或者几段无法直接调试的代码,甚至有些书上是错的,当时我在研究的过程中,就是按着 ...

  5. 二叉树中序遍历(递归+非递归)Java

    目录 一.结构 二.遍历二叉树 1.中序遍历(递归) 代码 图解 2.中序遍历(非递归) 代码 图解 一.结构 二.遍历二叉树 这块内容是二叉树最核心的部分.不但要掌握七种遍历的写法,前.中.后序的递 ...

  6. 二叉树——中序遍历(递归/非递归)

    中序遍历,即遍历顺序为:左节点.根节点.右节点. 二叉树节点: public class Node {public Node left;public Node right;public int val ...

  7. 二叉树中序遍历(递归法和迭代法(非递归法))——C++

    声明:本文原题主要来自力扣,记录此博客主要是为自己学习总结,不做任何商业等活动! 二叉树的遍历有前序遍历.中序遍历.后序遍历和层次遍历,其中二叉树基本知识点可以参考博主上篇博客(二叉树基本知识点图文介 ...

  8. 【C语言】二叉树中序遍历(递归和非递归)算法

    二叉树中序遍历的实现思想是: 访问当前节点的左子树: 访问根节点: 访问当前节点的右子树: 图 1 二叉树 以图  1 为例,采用中序遍历的思想遍历该二叉树的过程为: 访问该二叉树的根节点,找到 1: ...

  9. 二叉树后序遍历_二叉树后序遍历非递归实现

    二叉树的后序遍历非递归实现是三种遍历实现里面最复杂的一种了. 后序遍历的顺序是左节点-右节点-根节点,因为二叉树每个节点只有指向子节点的指针而没有指向父节点的指针,因此我们需要一个额外的变量来记录是否 ...

最新文章

  1. 【ASP.NET Web API教程】2.3.3 创建Admin控制器
  2. 压力不是来自于任务本身,而是任务在大脑中的堵塞,带来的焦虑和心理的抵触(转)...
  3. angularjs 导出excel php,AngularJS 导出Excel指令
  4. IDEA2021配置Tomcat
  5. 爬虫技术python代码_Python 你见过三行代码的爬虫吗
  6. .NET Core之只是多看了你一眼
  7. eclipse使用技巧---使用正则表达式查找替换
  8. python 内存分析_python内存管理分析
  9. JSON字符串和对象之间的转换
  10. 苹果抄袭豌豆射手实锤!AirPods Pro又被玩坏了...
  11. 阿里13篇论文入选数据库顶会!PolarDB技术被认为引领数据库发展方向
  12. 基础集合论 第一章 7 交集 8 差集
  13. Teststand 界面打不开问题解决
  14. python 日程管理程序_729. 我的日程安排表(Python)
  15. 【引用】DMA内存申请--dma_alloc_coherent
  16. matlab求解解析解,Matlab中解析解与数值解的区别
  17. 视觉SLAM前端——ICP
  18. 在Linux服务器上如何开启安全的SNMP代理
  19. 寻迹小车笔记——红外对管(TCRT5000)原理
  20. 动态类型+面向对象 = shit

热门文章

  1. 中关村计算机配置学生,中关村电脑对比参数 电脑如何配置比较好
  2. 雷军 我为什么会反击周鸿祎
  3. ogg配置 oracle,OGG同步配置ORACLE至ORACLE
  4. mysql创建服务失败_mysql服务启动失败
  5. Manjaro更新后,中文显示为方框----问题解决
  6. [转] 《Java并发编程的艺术》笔记
  7. Typora软件安装、主题下载
  8. Qt操控Windows Media Player
  9. jsoncpp中文乱码,中文显示为\u问题处理;jsoncpp中文乱码解决;源码方式使用jsoncpp;UTF_8和ASSIC相互转换;
  10. 5月9号软件资讯更新合集......