把二叉树打印成多行

题目

  从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。

 

分析

  用队列从根开始存储,首先判断队列是否为空,若不为空,取出第一个元素,将该元素的左孩子和右孩子(在有的情况下)继续存到队列中,知道队列为空。

  ,因为返回的是ArrayList<ArrayList<Integer>>类型,所以我们应该注意在哪里去创建ArrayList<Integer>。

 

代码

 1     ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) {
 2         ArrayList<ArrayList<Integer>> list = new ArrayList<ArrayList<Integer>>();
 3         if(pRoot==null)
 4             return list;
 5         Queue<TreeNode> q = new LinkedList<TreeNode>();
 6         q.add(pRoot);
 7         while(!q.isEmpty()){
 8             int low = 0, high = q.size();
 9             ArrayList<Integer> li = new ArrayList<Integer>();
10             while(low<high){
11                 TreeNode node = q.poll();
12                 li.add(node.val);
13                 if(node.left!=null)
14                     q.add(node.left);
15                 if(node.right!=null)
16                     q.add(node.right);
17                 low++;
18             }
19             list.add(li);
20         }
21         return list;
22     }

 

posted on 2017-06-15 15:21  一个不会coding的girl  阅读(191)  评论(0编辑  收藏  举报

导航