这里写自定义目录标题

  • 定义
  • 题目
  • 实现

定义

中序遍历(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. linux用户在哪个文件夹,LINUX中用命令成功建立一个用户后信息会记录在哪个文件中...
  2. [转载]为什么mysql用的是B+树?
  3. Leetcode24.Swap Nodes in Pairs两两交换链表中的节点
  4. 李彦宏的文字游戏:百度10篇论文被自然语言处理顶级会议ACL 2019录用
  5. 2.Java之路(Java语言开发环境搭建)
  6. 在最美好的年华里,不要辜负最美的自己
  7. 诗与远方:无题(四十一)
  8. mybatis的动态sql及模糊查询
  9. SEO HTML语义化
  10. backports移植rtlwifi驱动
  11. WinForm 圆形进度条CircularProgressBar
  12. 字节跳动python面试题校招_字节跳动校招----编程题(Python)
  13. android app 尺寸,Android APP标注尺寸入门教程和app标注工具
  14. 颜色科学与计算机测色配色实用技术,颜色科学与计算机测色配色实用技术
  15. 一个牛人的经历---北京八年——从极度贫困到财务自由
  16. 微信小程序-找地儿住-官方文档
  17. AI智能语音电销机器人能高效取代繁杂的电话工作
  18. 联想微型计算机c365,联想C365一体机如何用u盘重装系统
  19. LMG3422R030RQZR 600V GaN晶体管LMG3425R030RQZR电路图
  20. ylbtech-公司-滴滴出行:滴滴出行

热门文章

  1. 【译】TcMalloc: Thread-Caching Malloc
  2. 操作无法完成错误0x0000709再次检查打印机名称解决方法!
  3. TCP-IP协议详解(5) 我尽力(IP协议详解)
  4. Vue应用框架整合与实战--前端开发生态圈
  5. css-隐藏滚动条并可以滚动内容
  6. C语言 单引号 双引号问题
  7. Mysql--instr函数的介绍及使用
  8. 怎样利用DOI快速检索文献?
  9. 有什么软件可以免费压缩图片?
  10. WhatsApp云控-WhatsApp协议-WhatsApp群发全部功能