给定二叉树的根节点root,请用先序/中序/后序遍历分别返回其节点值

Java
297
0
0
2022-11-27

题目要求

给定二叉树的根节点root,请用先序/中序/后序遍历分别返回其节点值

代码

class TreeNode {
    public int val;
    public TreeNode left;
    public TreeNode right;

    public TreeNode(int val) {
        this.val = val;
    }
}

public class TestTree2 {
    //给你二叉树的根节点 root ,返回它节点值的 前序遍历。 
    public List<Integer> preorderTraversal(TreeNode root) {
        //先创建一个List
        List<Integer> result = new ArrayList<>();
        //如果root为空,证明是空的二叉树,那么就直接返回链表 
        if (root == null){
            return result;
        }
        result.add(root.val);
        result.addAll(preorderTraversal(root.left));
        result.addAll(preorderTraversal(root.right));
        return result;
    }

    //给你二叉树的根节点 root ,返回它节点值的 中序遍历。 
    public List<Integer> inorderTraversal(TreeNode root) {
        //先创建一个List
        List<Integer> result = new ArrayList<>();
        //如果root为空,证明是空的二叉树,那么就直接返回链表 
        if (root == null){
            return result;
        }
        result.addAll(inorderTraversal(root.left));
        result.add(root.val);
        result.addAll(inorderTraversal(root.right));
        return result;
    }

    //给你二叉树的根节点 root ,返回它节点值的 后序遍历。 
    public List<Integer> postorderTraversal(TreeNode root) {
        //先创建一个List
        List<Integer> result = new ArrayList<>();
        //如果root为空,证明是空的二叉树,那么就直接返回链表 
        if (root == null){
            return result;
        }
        result.addAll(postorderTraversal(root.left));
        result.addAll(postorderTraversal(root.right));
        result.add(root.val);
        return result;
    }
}