这里写自定义目录标题

  • 定义
  • 题目
  • 实现

定义

中序遍历(LDR)是二叉树遍历的一种,也叫做中根遍历、中序周游。在二叉树中,中序遍历首先遍历左子树,然后访问根结点,最后遍历右子树。

题目

给定一个二叉树,返回它的中序 遍历。

示例:

输入: [1,null,2,3]
1

2
/
3

输出: [1,3,2]

实现

public class BinaryTree_中序遍历 {public class TreeNode {int val;TreeNode left;TreeNode right;TreeNode(int x) { val = x; }}/*** 递归实现*/class Solution_by_recursion {public List<Integer> inorderTraversal(TreeNode root) {List<Integer> list = new ArrayList<>();getResult(root,list);return list;}//递归private void getResult(TreeNode root,List<Integer> list){if(root != null){if (root.left != null){getResult(root.left,list);}list.add(root.val);if(root.right != null){getResult(root.right,list);}}}/*** 复杂度分析时间复杂度:O(n)O(n)。递归函数 T(n) = 2 \cdot T(n/2)+1T(n)=2⋅T(n/2)+1。空间复杂度:最坏情况下需要空间O(n)O(n),平均情况为O(\log n)O(logn)。*/}/*** 栈实现*/class Solution_by_stack {//栈遍历public List<Integer> inorderTraversal(TreeNode root) {List<Integer> list = new ArrayList<>();Stack<TreeNode> stack = new Stack<>();TreeNode current = root;while (current != null || !stack.empty()){while (current != null){stack.push(current);current = current.left;}current = stack.pop();list.add(current.val);current = current.right;}return list;}/**** 复杂度分析时间复杂度:O(n)O(n)。空间复杂度:O(n)O(n)。*/}public static void main(String[] args) {//输入: [1,null,2,3]BinaryTree_中序遍历 br = new BinaryTree_中序遍历();TreeNode  tn1 = br.new TreeNode(1);TreeNode  tn2 = br.new TreeNode(2);TreeNode  tn3 = br.new TreeNode(3);tn1.right = tn2;tn2.left = tn3;//递归Solution_by_recursion recursion = br.new Solution_by_recursion();List<Integer> list_1 = recursion.inorderTraversal(tn1);System.out.println("=============递归=============");for (Integer v : list_1) {System.out.println(v);}//栈System.out.println();System.out.println();System.out.println();System.out.println("=============栈=============");Solution_by_stack stack = br.new Solution_by_stack();List<Integer> list_2 = stack.inorderTraversal(tn1);for (Integer v : list_2) {System.out.println(v);}}
}# 应用场景
可以用来做表达式树,在编译器底层实现的时候用户可以实现基本的加减乘除,比如 a*b+c

二叉树的中序遍历以及应用场景相关推荐

  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. php删除指定符号,利用PHP删除特殊符号
  2. [Tomcat]Tomcat6和Tomcat7的区别
  3. tcpdump dns流量监控
  4. Linux 标准目录结构 FHS
  5. 常考数据结构与算法----给定一个二叉树和一个值 sum,请找出所有的根节点到叶子节点的节点值之和等于sum 的路径,
  6. Linux makefile中的= := ?=操作符
  7. SigmaStar SSD201 开源记录
  8. OpenGL相机控制之二
  9. php访问服务器文件路径,PHP与服务器文件系统的简单交互
  10. python内置函数大全,赶紧收藏!!
  11. mac vscode远程服务器
  12. linux进入Mysql 的Dos控制台,dos进入mysql的实现方法
  13. Java单例模式双检锁原理
  14. vscode 添加版权信息
  15. 带托管代码的infopath2007表单创建, 发布,应用(MOSS开发)
  16. 机器学习(Machine Learning and Data Mining)CS 5751——final复习记录(3)
  17. 斜线“\”与反斜线“/”应用场景的整理
  18. js将网页保存成图片
  19. 刀客羽朋面向对象pdf
  20. CentOS 8 清除 DNS 缓存的方法

热门文章

  1. Cacheable、CacheEvict、Caching使用示例
  2. subplots用法总结
  3. 深入理解Solaris X64系统调用
  4. 当代著名书法家潘兴东书法欣赏(十八)
  5. python3实现链表的基础操作
  6. SV实验3 子系统验证和测试点划分
  7. Vue项目搭建手把手教学
  8. 排序算法——希尔排序
  9. 对tuscany中domain、cloud、node、composite关系的理解
  10. 图片热区自适应和设置热区边框