BM24 二叉树的中序遍历
解题思路:直接将数按照中序遍历放到集合里,然后将集合转成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 二叉树的中序遍历相关推荐
- 《LeetCode力扣练习》第94题 二叉树的中序遍历 Java
<LeetCode力扣练习>第94题 二叉树的中序遍历 Java 一.资源 题目: 给定一个二叉树的根节点 root ,返回它的 中序 遍历. 示例 1: 输入:root = [1,nul ...
- 树结构练习——排序二叉树的中序遍历(二叉搜索树)
树结构练习--排序二叉树的中序遍历 Time Limit: 1000MS Memory limit: 65536K 题目描述 在树结构中,有一种特殊的二叉树叫做排序二叉树,直观的理解就是--(1).每 ...
- LeetCode-二叉树-94. 二叉树的中序遍历
描述 94. 二叉树的中序遍历 给定一个二叉树的根节点 root ,返回它的 中序 遍历. 示例 1: 输入:root = [1,null,2,3] 输出:[1,3,2] 示例 2: 输入:root ...
- 树结构练习——排序二叉树的中序遍历
树结构练习--排序二叉树的中序遍历 Description 在树结构中,有一种特殊的二叉树叫做排序二叉树,直观的理解就是--(1).每个节点中包含有一个关键值 (2).任意一个节点的左子树(如果存在的 ...
- LeetCode 92反转链表Ⅱ93复制ip地址94二叉树的中序遍历
微信搜一搜:bigsai 专注于Java.数据结构与算法,一起进大厂不迷路! 算法文章题解全部收录在github仓库bigsai-algorithm,求star! 关注回复进群即可加入力扣打卡群,欢迎 ...
- lintcode:二叉树的中序遍历
题目: 二叉树的中序遍历 给出一棵二叉树,返回其中序遍历 样例 给出二叉树 {1,#,2,3}, 1\2/3 返回 [1,3,2]. 挑战 你能使用非递归算法来实现么? 解题: 程序直接来源 Java ...
- 二叉树的中序遍历非递归方法(算法导论第三版12.1-3)
二叉树的中序遍历非递归方法(算法导论第三版12.1-3) 1⃣️用栈实现 template<typename T> void inorder_tree_walk_non_recursion ...
- leetcode - 94. 二叉树的中序遍历
给定一个二叉树,返回它的中序遍历.中序遍历(LDR)是二叉树遍历的一种,也叫做中根遍历.中序周游.在二叉树中,中序遍历首先遍历左子树,然后访问根结点,最后遍历右子树. 示例: 进阶: 递归算法很简单, ...
- LeetCode-94. 二叉树的中序遍历
题目描述: 给定一个二叉树的根节点 root ,返回它的 中序 遍历. 输入:root = [1,null,2,3] 输出:[1,3,2] 思路分析: 用递归或是迭代算法来解决. 递归: 首先我们需要 ...
最新文章
- java初始化一个链表_Java 链表(LinkNode)的简单操作:初始化,遍历,插入,删除等...
- diou diou_nms代码分享
- Steve Lin:如何撰写一篇优秀的SIGGRAPH论文
- 基础练习 01字串 c语言
- maven下载源码linux,Maven 下载 源码和javadoc 命令
- 为何Windows版QuickTime突然寿终正寝?
- 【win10】局域网内两台win10共享文件夹
- 云原生应用 Kubernetes 监控与弹性实践
- java try的用法_Java中try、catch的使用方法
- android毕业论文附录,毕业论文常见格式 论文附录格式
- 极品飞车最高通缉Ps2的秘籍
- flask-uploads
- 对接腾讯广告平台系统开发(半自动化广告投放系统)
- NR/5G ~ UCI Multiplexing on PUSCH
- flac转mp3的方法
- IC Nansha|AMD高级副总裁、大中华区总裁潘晓明:制程、架构、平台优化突破计算边界
- eclipse与数据库连接插入或者拿出数据出现乱码该如何解决。
- 802.11成帧封装实现(五)
- 独秀日记:给我介绍一份工作
- 科普|汽车毫米波雷达的规定和标准 微功率短距离无线电发射SRRC认证