leetcode刷题-94二叉树的中序遍历

149 阅读1分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

leetcode94-二叉树的中序遍历

前文

本文为菜鸟的刷题记录,仅用作笔记使用,并非最佳解决方案。

题目信息

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

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

解题思路分析

解法1

为了了解如何处理二叉树的中序遍历,首先需要知道二叉树的中序遍历是什么。中序遍历,顾名思义就是将二叉树的当前节点作为中间节点进行遍历。也就是先遍历二叉树的左节点,再遍历二叉树的当前节点,最后遍历二叉树的右节点。而由于二叉树的左右节点同样可以认为是一个二叉树的根节点,因此在遍历过程中会反复对于二叉树的根节点进行操作。按此思路,我们很容易想到采用递归的解决方案。首先我们需要设定一个数组,用于存储二叉树的遍历结果。然后我们要从根节点开始进行递归操作,每次操作都是由左节点传入递归函数,中间节点放入数组,右节点传入递归函数的顺序进行。按此执行便可得到二叉树的中序遍历结果。 代码如下:

List<Integer> result = new ArrayList<>();
public List<Integer> inorderTraversal(TreeNode root) {
    if(root != null){
        inorderTraversal(root.left);
        result.add(root.val);
        inorderTraversal(root.right);
    }
    return result;
}

复杂度分析

  • 时间复杂度 o(n)
  • 空间复杂度 o(1)

后记

  • 千古兴亡多少事?悠悠。不尽长江滚滚流。