难度等级:容易
上一篇算法:
102. 二叉树的层序遍历【206】
力扣此题地址:
94. 二叉树的中序遍历 - 力扣(Leetcode)
1.题目:94. 二叉树的中序遍历
给定一个二叉树的根节点 root
,返回 它的 中序 遍历 。
2.解题思路:
中序遍历:左节点-->根节点-->右节点
中序遍历方法的代码实现:
1.先判断树是否为null
2.中序遍历就是先递归左子树,再将根节点添加到list中,最后再递归右子树
二叉树概念及基本功能实现
3.代码实现:
/**
* 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作为返回
List<Integer> res = new ArrayList<Integer>();
//调用中序遍历方法
inorder(root,res);
//返回链表
return res;
}
public void inorder(TreeNode root, List<Integer> res) {
//判断是否为null,也是递归的终止条件
if (root == null) {
return;
}
//中序遍历思路就是:先递归左子树,再打印或添加根节点,最后递归右子树
inorder(root.left, res);
res.add(root.val);
inorder(root.right, res);
}
}
注:由上面代码规律可以看出,除了根节点是直接打印其值之外,左节点、右节点都是通过递归遍历的方式遍历到。如:
前序遍历:添加根节点--->递归遍历左节点--->递归遍历右节点
中序遍历:递归遍历左节点--->添加根节点--->递归遍历右节点
后序遍历:递归遍历左节点--->递归遍历右节点--->添加根节点