天天看点

数据结构与算法:二叉树的后序遍历

描述

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

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

public class PostorderTraversalTree {

    public class TreeNode {
        int val = 0;
        TreeNode left = null;
        TreeNode right = null;
        public TreeNode(int val) {
          this.val = val;
        }
    }

    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param root TreeNode类
     * @return int整型一维数组
     */
    public int[] postorderTraversal (TreeNode root) {
        if(null == root){
            return new int[]{};
        }

        List<Integer> listNode = new ArrayList<>();
        postorderTraversalImpl(root, listNode);
        int[] arr = new int[listNode.size()];
        for (int i = 0; i <listNode.size(); i++) {
            arr[i] = listNode.get(i);
        }
        return arr;
    }

    private void postorderTraversalImpl(TreeNode root, List<Integer> listNode){
        TreeNode left = root.left;
        TreeNode right = root.right;

        if(left != null){
            postorderTraversalImpl(left,listNode);
        }

        if(right != null){
            postorderTraversalImpl(right,listNode);
        }

        listNode.add(root.val);
    }

    public static void main(String[] args) {

    }
}