力扣Java版个人代码分享-树篇( 二叉树的前序遍历、中序遍历、后序遍历)

二叉树的前序遍历、中序遍历、后序遍历

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

例子

例子1:
输入: [1,null,2,3]

   1
    \
     2
    /
   3

前序:[1,2,3]
中序:[1,3,2]
后序:[3,2,1]

代码

//前序遍历
    List<Integer> l = new LinkedList<>();
    public List<Integer> preorderTraversal(TreeNode root) {
    
    
        if(root == null){
    
    
            return l;
        }
        l.add(root.val);
        preorderTraversal(root.left);
        preorderTraversal(root.right);
        return l;
    }
//中序遍历
    List<Integer> l = new ArrayList<>();
    public List<Integer> inorderTraversal(TreeNode root) {
    
    
        if(root == null){
    
    
            return l;
        }
        inorderTraversal(root.left);
        l.add(root.val);
        inorderTraversal(root.right);
        return l;
    }
    //后序遍历
        List <Integer>l = new LinkedList<>();
    public List<Integer> postorderTraversal(TreeNode root) {
    
    
        if(root == null){
    
    
            return l;
        }
        postorderTraversal(root.left);
        postorderTraversal(root.right);
        l.add(root.val);
        return l;
    }

思路

注意事项

首先要有递归边界,确定递归边界返回的值。
其次就是跟正常的遍历一样,最后返回链表。

待优化

猜你喜欢

转载自blog.csdn.net/northern0407/article/details/108459562