二叉树的前中后序遍历

前序:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
public static List<Integer> preorderTraversal(TreeNode root) {
        List<Integer> ans=new ArrayList() ;
        if(root!=null){
            ans.add(root.val);
            if(root.left!=null){
                ans.addAll(preorderTraversal(root.left));
            }

            if(root.right!=null){
                ans.addAll(preorderTraversal(root.right));
            }


        }
        return ans;

    }

中序:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
public static List<Integer> inorderTraversal(TreeNode root) {
        List<Integer> ans=new ArrayList() ;
        if(root!=null){
            if(root.left!=null){
                ans.addAll(inorderTraversal(root.left));
            }
            ans.add(root.val);
            if(root.right!=null){
                ans.addAll(inorderTraversal(root.right));
            }


        }
        return ans;


    }

后序:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
public List<Integer> postorderTraversal(TreeNode root) {
        List<Integer> ans=new ArrayList() ;
        if(root!=null){

            if(root.left!=null){
                ans.addAll(postorderTraversal(root.left));
            }

            if(root.right!=null){
                ans.addAll(postorderTraversal(root.right));
            }

            ans.add(root.val);

        }
        return ans;

    }