解题思路:直接将数按照中序遍历放到集合里,然后将集合转成int数组返回,需要遍历整个二叉树,而且需要集合来保存二叉树的值,故时间复杂度为O(n),空间复杂度为O(n)

import java.util.*;/** public class TreeNode {*   int val = 0;*   TreeNode left = null;*   TreeNode right = null;*   public TreeNode(int val) {*     this.val = val;*   }* }*/public class Solution {/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可*** @param root TreeNode类* @return int整型一维数组*/public int[] inorderTraversal (TreeNode root) {// write code hereif (root == null) {return new int[0];}ArrayList<Integer> list  = new ArrayList<>();addToList(root, list);return list.stream().mapToInt(x->x).toArray();}private void addToList(TreeNode root, ArrayList<Integer> list) {//中序遍历 左根右if (root == null) {return ;}addToList(root.left, list);list.add(root.val);addToList(root.right, list);}
}

扩展:也可以使用非递归的方式来实现

import java.util.*;/** public class TreeNode {*   int val = 0;*   TreeNode left = null;*   TreeNode right = null;*   public TreeNode(int val) {*     this.val = val;*   }* }*/public class Solution {/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可*** @param root TreeNode类* @return int整型一维数组*/public int[] inorderTraversal (TreeNode root) {// write code hereif (root == null) {return new int[0];}ArrayList<Integer> list  = new ArrayList<>();Stack<TreeNode> stack = new Stack<>();TreeNode cur = root;while (!stack.isEmpty() || cur != null) {if (cur != null) {stack.push(cur);cur = cur.left;} else {TreeNode node = stack.pop();list.add(node.val);cur = node.right;}}return list.stream().mapToInt(x->x).toArray();}
}

BM24 二叉树的中序遍历相关推荐

  1. 《LeetCode力扣练习》第94题 二叉树的中序遍历 Java

    <LeetCode力扣练习>第94题 二叉树的中序遍历 Java 一.资源 题目: 给定一个二叉树的根节点 root ,返回它的 中序 遍历. 示例 1: 输入:root = [1,nul ...

  2. 树结构练习——排序二叉树的中序遍历(二叉搜索树)

    树结构练习--排序二叉树的中序遍历 Time Limit: 1000MS Memory limit: 65536K 题目描述 在树结构中,有一种特殊的二叉树叫做排序二叉树,直观的理解就是--(1).每 ...

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

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

  4. 树结构练习——排序二叉树的中序遍历

    树结构练习--排序二叉树的中序遍历 Description 在树结构中,有一种特殊的二叉树叫做排序二叉树,直观的理解就是--(1).每个节点中包含有一个关键值 (2).任意一个节点的左子树(如果存在的 ...

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

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

  6. lintcode:二叉树的中序遍历

    题目: 二叉树的中序遍历 给出一棵二叉树,返回其中序遍历 样例 给出二叉树 {1,#,2,3}, 1\2/3 返回 [1,3,2]. 挑战 你能使用非递归算法来实现么? 解题: 程序直接来源 Java ...

  7. 二叉树的中序遍历非递归方法(算法导论第三版12.1-3)

    二叉树的中序遍历非递归方法(算法导论第三版12.1-3) 1⃣️用栈实现 template<typename T> void inorder_tree_walk_non_recursion ...

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

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

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

    题目描述: 给定一个二叉树的根节点 root ,返回它的 中序 遍历. 输入:root = [1,null,2,3] 输出:[1,3,2] 思路分析: 用递归或是迭代算法来解决. 递归: 首先我们需要 ...

最新文章

  1. java初始化一个链表_Java 链表(LinkNode)的简单操作:初始化,遍历,插入,删除等...
  2. diou diou_nms代码分享
  3. Steve Lin:如何撰写一篇优秀的SIGGRAPH论文
  4. 基础练习 01字串 c语言
  5. maven下载源码linux,Maven 下载 源码和javadoc 命令
  6. 为何Windows版QuickTime突然寿终正寝?
  7. 【win10】局域网内两台win10共享文件夹
  8. 云原生应用 Kubernetes 监控与弹性实践
  9. java try的用法_Java中try、catch的使用方法
  10. android毕业论文附录,毕业论文常见格式 论文附录格式
  11. 极品飞车最高通缉Ps2的秘籍
  12. flask-uploads
  13. 对接腾讯广告平台系统开发(半自动化广告投放系统)
  14. NR/5G ~ UCI Multiplexing on PUSCH
  15. flac转mp3的方法
  16. IC Nansha|AMD高级副总裁、大中华区总裁潘晓明:制程、架构、平台优化突破计算边界
  17. eclipse与数据库连接插入或者拿出数据出现乱码该如何解决。
  18. 802.11成帧封装实现(五)
  19. 独秀日记:给我介绍一份工作
  20. 科普|汽车毫米波雷达的规定和标准 微功率短距离无线电发射SRRC认证

热门文章

  1. 分享!如何实现微信扫二维码调用外部浏览器打开指定页面的功能
  2. 面试题--hashCode与equals
  3. CSS字体样式有哪些
  4. NLP领域中的预训练模型杂谈
  5. UI设计--大象无形
  6. 这本小说写的是通奸,我却看到了人性的荣光
  7. 爬取NBA球员数据画出球员的雷达图
  8. 我的第一个 100 K App
  9. 2003_由于不可识别问题_windows无法显示windows防火墙设置解决方法
  10. 经典卷积神经网络模型盘点