leetcode 二叉树的三种遍历方法

289 阅读1分钟

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

中序遍历

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

示例 1:

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

示例 2:

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

示例 3:

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

示例 4:

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

示例 5:

Untitled

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

提示

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

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

题解

public List<Integer> inorderTraversal(TreeNode root) {
        ArrayList<Integer> integers = new ArrayList<>();
        houxu(root,integers);
        return integers;
    }

    public static void houxu(TreeNode twoTree,List list) {
        if (null == twoTree) {
            return;
        }
        houxu(twoTree.left,list);
        list.add(twoTree.val);
        houxu(twoTree.right,list);
    }

image.png

后序遍历

给定一个二叉树,返回它的 后序 遍历。

示例:

输入: [1,null,2,3]
1
 \
  2
 /
3

输出: [3,2,1] 进阶: 递归算法很简单,你可以通过迭代算法完成吗?

题解

public List<Integer> postorderTraversal(TreeNode root) {
       ArrayList<Integer> integers = new ArrayList<>();
        houxu(root,integers);
        return integers;
    }

    public static void houxu(TreeNode twoTree,List list) {
        if (null == twoTree) {
            return;
        }
        houxu(twoTree.left,list);
        houxu(twoTree.right,list);
        list.add(twoTree.val);
    }

image.png

前序描述

给你二叉树的根节点 root ,返回它节点值的 前序 遍历。

示例 1:

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

示例 2:

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

示例 3:

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

示例 4:

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

示例 5:

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

提示

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

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

题解

1.使用迭代. 将需要迭代的代码抽出来(当前节点的值放入数组,读取左节点和右节点)

2.先判断当前节点的值是否为null

3.将左节点放入迭代中.

4.将右节点放入迭代中.

public List<Integer> preorderTraversal(TreeNode root) {
        List<Integer> list = new ArrayList<Integer>();
        pre(root,list);
        return list;
    }

    public void pre(TreeNode node , List list) {
        if (null == node) {
            return ;
        }
        list.add(node.val);
        pre(node.left,list);
        pre(node.right,list);
    }

image.png