LeetCode二叉树中序遍历

1.1 题目描述

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

1.2 示例

示例:


输入:root = [1,null,2,3]
输出:[1,3,2]

2.1 解题

2.1.1 解题方法:递归

二叉树的中序遍历方法:按照“左(子树)→中→右”顺序遍,可以使用递归方式进行遍历

Java版解题

/*** Definition for a binary tree node.* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode() {}*     TreeNode(int val) { this.val = val; }*     TreeNode(int val, TreeNode left, TreeNode right) {*         this.val = val;*         this.left = left;*         this.right = right;*     }* }*/
class Solution {public List<Integer> inorderTraversal(TreeNode root) {List<Integer> res = new ArrayList<>();inorder(root, res);return res;}void inorder(TreeNode root, List<Integer> list) {if (root == null) {return;}inorder(root.left, list);         //逐层遍历当前节点所有左子树list.add(root.val);              //将节点值按顺序存入集合中inorder(root.right, list);}
}

解题结果

扩展

前序遍历(中→左→右)

class Solution {public List<Integer> inorderTraversal(TreeNode root) {List<Integer> res = new ArrayList<>();inorder(root, res);return res;}void inorder(TreeNode root, List<Integer> list) {if (root == null) {return;}list.add(root.val);             // 注意这一句inorder(root.left, list);inorder(root.right, list);}
}

后序遍历(左→右→中)

class Solution {public List<Integer> postorderTraversal(TreeNode root) {List<Integer> res = new ArrayList<>();postorder(root, res);return res;}void postorder(TreeNode root, List<Integer> list) {if (root == null) {return;}postorder(root.left, list);postorder(root.right, list);list.add(root.val);             // 注意这一句}
}

LeetCode二叉树中序遍历相关推荐

  1. 【LeetCode 剑指offer刷题】树题19:8 二叉树中序遍历的下一个结点

    [LeetCode & 剑指offer 刷题笔记]目录(持续更新中...) 8 二叉树中序遍历的下一个结点 题目描述 给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回.注 ...

  2. leetcode算法题--二叉树中序遍历迭代法

    原题链接:https://leetcode-cn.com/problems/binary-tree-inorder-traversal/ 二叉树中序遍历迭代法,栈实现 vector<int> ...

  3. 详细图解二叉树中序遍历(非递归C++)LeetCode94

    详细图解二叉树中序遍历(非递归) 二叉树中序递归含义 LeetCode题目94 详细图解 源代码 运行结果 二叉树中序递归含义 中序遍历首先遍历左子树,然后访问根结点,最后遍历右子树.若二叉树为空则结 ...

  4. C++ morris inorder二叉树中序遍历(附完整源码)

    C++ morris inorder二叉树中序遍历 morris inorder二叉树中序遍历算法的完整源码(定义,实现,main函数测试) morris inorder二叉树中序遍历算法的完整源码( ...

  5. 初始序列为1 8 6 2 5 4 7 3一组数采用堆排序,当建堆(小根堆)完毕时,堆所对应的二叉树中序遍历序列为

    初始序列为1 8 6 2 5 4 7 3一组数采用堆排序,当建堆(小根堆)完毕时,堆所对应的二叉树中序遍历序列为:() 8 3 2 5 1 6 4 7 3 2 8 5 1 4 6 7 3 8 2 5 ...

  6. 基本题型记录-二叉树中序遍历

    由于本人基础较差,所以针对部分题型做一个记录,以免自己忘记 1.二叉树中序遍历 这个遍历方法可以搜一下博客上很多讲解,这里主要是记录一下代码实现,以下面的二叉树为例子 结果应该是 2.迭代法 2.1 ...

  7. 华为机试:二叉树中序遍历

    题目来源 华为机试:二叉树中序遍历 题目描述 题目解析 思路 class Solution{struct TreeNode{char ch;TreeNode *left;TreeNode *right ...

  8. 不用栈的二叉树中序遍历

    不用栈的二叉树中序遍历 // 中序遍历非栈非递归 void inOrder_noRecursion_noStack(TreeNode* r, char* pattern) {TreeNode* cur ...

  9. 二叉树中序遍历线索化 C++ 递归实现

    二叉树中序遍历线索化 中序遍历有一个特点,只要不是叶子节点,遍历的时候左孩子一定是当前节点的上一个访问节点:右孩子一定是当前节点的下一个访问节点. 如果把叶子节点的左右孩子都利用起来,把空的左孩子做成 ...

  10. 二叉树中序遍历线索化

    #include<stdio.h>typedef struct ThreadNode{int data;struct ThreadNode *lchild,*rchild;int ltag ...

最新文章

  1. python起步输入-Python 起飞系列————起步(一)
  2. Python文件操作IO open 读-取-写
  3. java中的controller_详解Spring Boot中Controller用法
  4. mysql常用命令集合 及附图操作
  5. UART_RECV详细设计方案
  6. 桌面虚拟化在学生教室及机房的应用案例
  7. ASP.NET MVC中的安全性
  8. 鲲鹏BoostKit虚拟化使能套件,让数据加密更安全
  9. MySQL数据库约束(非空,唯一,默认,主键,外键约束)
  10. 技嘉主板开机自动进入bios怎么解决?
  11. Android 4.0 人脸,Android 4.0.3!原道N90人脸识别试用
  12. web数据可视化(ECharts版)
  13. UI设计——以网易云音乐为例
  14. mysql历史表_MySQL历史表设计和查询
  15. Proe5 修改默认模板单位为公制
  16. vue 点击打开pdf
  17. 爬楼梯--每次只能走一步或者两步,但是不能连续走两步
  18. mysql explain type_MySQL explain type详解
  19. Composite(组合模式)
  20. async和await以及promise的区别

热门文章

  1. P2627 [USACO11OPEN]Mowing the Lawn G(单调队列优化dp)
  2. 遇到一个很冷门的bug(java.lang.NoSuchMethodException问题原因及解决办法)
  3. 平面向量内积坐标公式推导_向量内积的坐标表示.ppt
  4. vue + echarts 实现以中国为中心的世界3D地图
  5. 计算机画图保存的图片怎么找到,想知道电脑截图保存在哪儿找
  6. Codeforces 917B MADMAX (DP+博弈)
  7. cypress——前端自动化测试框架
  8. 留学回国人员申办上海常住户口实施细则
  9. 【微信H5开发】the permission value is offline verifying
  10. Time-Series Representation Learning via Temporal and Contextual Contrasting