一、题目描述
从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行
二、解题思路
层序遍历的方法用栈和队列都可以
三、java代码
public class Solution_61 {
/**
* 从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行
*/
ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) {
//层序遍历的方法用栈和队列都可以
ArrayList<ArrayList<Integer>> list = new ArrayList<ArrayList<Integer>>();
if(pRoot == null){
return list;
}
ArrayList<Integer> tempList = new ArrayList<Integer>();
Queue<TreeNode> queue = new LinkedList<TreeNode>();
queue.add(pRoot);
int start = 0,end = 1; //设置初始状态,用来判断层
while(!queue.isEmpty()){
TreeNode cur = queue.remove();
tempList.add(cur.val);
start++;
if(cur.left != null){
queue.add(cur.left);
}
if(cur.right != null){
queue.add(cur.right);
}
if(start == end){
start = 0;
end = queue.size();
list.add(tempList);
tempList = new ArrayList<Integer>();
}
}
return list;
}
}