二叉树的中序遍历

题目描述

  1. 题目地址:https://leetcode.cn/problems/binary-tree-inorder-traversal/
  2. 题目要求
    给定一个二叉树的根节点 root ,返回它的中序遍历 。
  3. 示例:
    image

示例 1:

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

示例 2:

输入:root = []
输出:[]

解题思路

  1. 首先我们需要了解什么是二叉树的中序遍历
    按照访问左子树——根节点——右子树的方式遍历这棵树,而在访问左子树或者右子树的时候我们按照同样的方式遍历,直到遍历完整棵树。因此整个遍历过程天然具有递归的性质,我们可以直接用递归函数来模拟这一过程。

  2. 定义inorder(root) 表示当前遍历到root 节点的答案,那么按照定义,我们只要递归调用 inorder(root.left) 来遍历root 节点的左子树,然后将root 节点的值加入答案,再递归调用inorder(root.right) 来遍历root 节点的右子树即可,递归终止的条件为碰到空节点。

解题代码

var inorderTraversal = function(root) {
 const res = [];// 储存处理结果
    const inorder = (root) => {
        if (!root) {
            return;
        }
		// 遍历左子树
        inorder(root.left);
		// 记录值
        res.push(root.val);
		// 遍历右子树
        inorder(root.right);
    }
    inorder(root);
    return res;
};

posted @ 2022-09-11 10:40  fionna  阅读(81)  评论(0编辑  收藏  举报