《劍指offer》把一棵二叉樹列印成多行
阿新 • • 發佈:2019-01-01
注:此部落格不再更新,所有最新文章將發表在個人獨立部落格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; } }