题目描述
从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。
解题思路
是基于层次遍历的方式,通过设置来实现按层输出一行。
设置ArrayList< Integer > list用来实现对二叉树每层的元素的保存;
ArrayList< ArrayList< Integer >> list1用来实现对二叉树的多层进行一个保存。
代码块
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.Queue;
/*
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<Integer> list=new ArrayList<Integer>();
ArrayList<ArrayList<Integer>> list1=new ArrayList<ArrayList<Integer>>();
Queue <TreeNode> queue=new LinkedList <TreeNode>();
int NumOfThisLine=1;
int NumOfNextLine=0;
TreeNode p=null;
if(pRoot==null) {
return new ArrayList();
}
queue.add(pRoot);
while(!queue.isEmpty()) {
p=queue.remove();
list.add(p.val);
NumOfThisLine--;
if(p.left!=null) {
queue.add(p.left);
NumOfNextLine++;
}
if(p.right!=null) {
queue.add(p.right);
NumOfNextLine++;
}
if(NumOfThisLine==0) {
list1.add(list);
list=new ArrayList();
NumOfThisLine=NumOfNextLine;
NumOfNextLine=0;
}
}
return list1;
}
}