算法:二叉树的中序遍历

412 阅读1分钟

「这是我参与11月更文挑战的第9天,活动详情查看:2021最后一次更文挑战

Hope is a good thing, maybe the best of things. And no good thing ever dies.

题目

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

示例 1:

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

image.png

示例 2:

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

示例 3:

输入:root = [1]
输出:[1]
示例 4:

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

image.png

示例 5:

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

image.png

什么是中序遍历?

中序遍历(LDR)是二叉树遍历的一种,也叫做中根遍历、中序周游。在二叉树中,中序遍历首先遍历左子树,然后访问根结点,最后遍历右子树

中序遍历首先遍历左子树,然后访问根结点,最后遍历右子树。若二叉树为空则结束返回,否则:

image.png

(1)中序遍历左子树

(2)访问根结点

(3)中序遍历右子树

如图所示二叉树,中序遍历结果:DBEAFC

解题

使用递归:按照访问左子树 —— 根节点 —— 右子树的方式遍历这棵树,而在访问左子树或者右子树的时候我们按照同样的方式遍历,直到遍历完整棵树

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;
};

附参考:

结语

如果这篇文章帮到了你,欢迎点赞👍和关注⭐️。

文章如有错误之处,希望在评论区指正🙏🙏

欢迎关注我的微信公众号,一起交流技术,微信搜索 🔍 :「 五十年以后