leetcode二叉树前序遍历

二叉树前序遍历

题目本身没啥值得说的, 根左右,但是这个遍历的框架值得记录,主要是想借助题目形成框架,套路


package binarytree;


import java.util.ArrayList;
import java.util.List;

/**
 * 144. 二叉树的前序遍历
 * 给你二叉树的根节点 root ,返回它节点值的 前序 遍历。
 * <p>
 * <p>
 * <p>
 * 示例 1:
 * <p>
 * <p>
 * 输入:root = [1,null,2,3]
 * 输出:[1,2,3]
 * 示例 2:
 * <p>
 * 输入:root = []
 * 输出:[]
 * 示例 3:
 * <p>
 * 输入:root = [1]
 * 输出:[1]
 * 示例 4:
 * <p>
 * <p>
 * 输入:root = [1,2]
 * 输出:[1,2]
 * 示例 5:
 * <p>
 * <p>
 * 输入:root = [1,null,2]
 * 输出:[1,2]
 * <p>
 * <p>
 * 提示:
 * <p>
 * 树中节点数目在范围 [0, 100] 内
 * -100 <= Node.val <= 100
 * <p>
 * <p>
 * 进阶:递归算法很简单,你可以通过迭代算法完成吗?
 */
public class PreorderTraversal {
    /**
     * 前序遍历  根左右
     *
     * @param root
     * @return
     */
    public static List<Integer> preorderTraversal(TreeNode root) {
        List<Integer> res = new ArrayList<>();
        preOrder(root, res);
        return res;
    }

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

    public static void main(String[] args) {
        Integer[] data = {1, null, 2, 3};
        TreeNode node = GenerateTreeNode.generateTreeNode(data);
        List<Integer> res = preorderTraversal(node);
        for (int i = 0; i < res.size(); i++) {
            System.out.println(res.get(i));
        }
    }
}

原文地址:https://www.cnblogs.com/xiaoshahai/p/15682171.html