天天看點

資料結構與算法:二叉樹的後序周遊

描述

給定一個二叉樹,傳回他的後序周遊的序列。

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) {

    }
}