美文网首页
【教3妹学算法】94. 二叉树的中序遍历

【教3妹学算法】94. 二叉树的中序遍历

作者: 程序员小2 | 来源:发表于2022-10-01 08:05 被阅读0次

插: 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。
坚持不懈,越努力越幸运,大家一起学习鸭~~~

3妹

3妹:2哥2哥,你猜今天我在公交车上看到了什么。
2哥:什么啊,跟我说说,我这颗八卦好奇心。
3妹:我听到2个人在讨论他们的工资,一个人说他的多次只有****, 另一个人说他更惨,工资更少,只有****。
2哥:这有什么好稀奇的,我还以为是什么呢?
3妹:你不知道,我发现人与人的工资差别还是很大的。
2哥:那当然了,每个人的能力不一样,收入也自然不一样。 还有,这个社会也只能相对公平,并非绝对公平。
3妹:哎,什么时候老板能给我涨工资啊。
2哥:哈哈哈哈, 来我们先刷刷算法题吧。

讲课

题目:

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

示例 1:


image.png

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

输入:root = []
输出:[]
示例 3:

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

提示:

树中节点数目在范围 [0, 100] 内
-100 <= Node.val <= 100

进阶: 递归算法很简单,你可以通过迭代算法完成吗?

方法1 迭代:


class Solution {
    public List<Integer> inorderTraversal(TreeNode root) {
        List<Integer> res = new ArrayList<Integer>();
        if(root == null) {
            return  res;
        }

        Stack<TreeNode> stack = new Stack<TreeNode>();
        while (root != null || !stack.isEmpty()) {
            while (root != null) {
                stack.push(root);
                root = root.left;
            }

            root = stack.pop();
            res.add(root.val);
            root = root.right;
        }


        return res;
    }
}

方法2 递归:

public List<Integer> inorderTraversal2(TreeNode root) {
        List<Integer> res = new ArrayList<Integer>();
        inOrder(root, res);
        return res;
    }

    private void inOrder(TreeNode root, List<Integer> res) {
        if (root == null) {
            return;
        }
        inOrder(root.left, res);
        res.add(root.val);
        inOrder(root.right, res);
    }

相关文章

网友评论

      本文标题:【教3妹学算法】94. 二叉树的中序遍历

      本文链接:https://www.haomeiwen.com/subject/vztdartx.html