剑指offer_把二叉树打印成多行
题目描述
从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。
和上一题思路差不多,在while循环中再嵌套一层层数的循环,再加个count判断每层节点个数
1 import java.util.ArrayList; 2 3 4 /* 5 public class TreeNode { 6 int val = 0; 7 TreeNode left = null; 8 TreeNode right = null; 9 10 public TreeNode(int val) { 11 this.val = val; 12 13 } 14 15 } 16 */ 17 public class Solution { 18 ArrayList<TreeNode> queue = new ArrayList<>(); 19 ArrayList<ArrayList<Integer> > ans = new ArrayList<>(); 20 ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) { 21 if(pRoot==null) return ans; 22 queue.add(pRoot); 23 while(!queue.isEmpty()){ 24 int count = queue.size(); 25 ArrayList<Integer> arr= new ArrayList<>(); 26 while(count-->0) 27 { 28 TreeNode temp = queue.remove(0); 29 arr.add(temp.val); 30 if(temp.left!=null) queue.add(temp.left); 31 if(temp.right!=null) queue.add(temp.right); 32 33 } 34 ans.add(arr); 35 } 36 return ans; 37 } 38 39 }

浙公网安备 33010602011771号