剑指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 }

 

posted @ 2019-09-01 09:35  chyblogs  阅读(104)  评论(0)    收藏  举报