1. 程式人生 > >《劍指offer》把一棵二叉樹列印成多行

《劍指offer》把一棵二叉樹列印成多行

注:此部落格不再更新,所有最新文章將發表在個人獨立部落格limengting.site。分享技術,記錄生活,歡迎大家關注

題目描述
從上到下按層列印二叉樹,同一層結點從左至右輸出。每一層輸出一行。

import java.util.ArrayList;
import java.util.Queue;
import java.util.LinkedList;

/*
public class TreeNode {
    int val = 0;
    TreeNode left = null;
    TreeNode right = null;

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

    }

}
*/
public class Solution {
    ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) {
        ArrayList<ArrayList<Integer>> arrayLists = new ArrayList<ArrayList<Integer>>();
        if (pRoot == null) return arrayLists;
        Queue<TreeNode> queue = new LinkedList<>();
        ArrayList<Integer> arrayList = new ArrayList<>();
        int count = 0;
        int nextLayerCount = 1;
        queue.add(pRoot);
        while (!queue.isEmpty()) {
            TreeNode treeNode = queue.poll();
            arrayList.add(treeNode.val);
            count++;
            if (treeNode.left != null) {
                queue.add(treeNode.left);
            }
            if (treeNode.right != null) {
                queue.add(treeNode.right);
            }
            if (count == nextLayerCount) {
                arrayLists.add(arrayList);
                count = 0;
                nextLayerCount = queue.size();
                arrayList = new ArrayList<>();
            }
        }
        return arrayLists;
    }
}