从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。
还是要用队列来写
cur来记当前poll的node nlast一开始为Null 后面来记刚加入队列的node(其实就是下一层的末尾) last开始在根节点 只要cur==last 就说明到了一层的末尾了 last=nlast
public class Solution {
ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) {
ArrayList<ArrayList<Integer>> res=new ArrayList<ArrayList<Integer> >();
if(pRoot==null)
return res;//注意 别返回Null
TreeNode last=pRoot;//注意!!!!!!!!
TreeNode nlast=null;//注意
LinkedList<TreeNode> queue=new LinkedList<TreeNode>();
queue.add(pRoot);
ArrayList<Integer> tmp=new ArrayList<Integer>();
while(!queue.isEmpty()){
TreeNode cur=queue.poll();
tmp.add(cur.val);
if(cur.left!=null)
{ queue.add(cur.left);
nlast=cur.left;}
if(cur.right!=null)
{queue.add(cur.right);
nlast=cur.right;}
if(cur==last)
{
res.add(new ArrayList<Integer>(tmp));
tmp.clear();
last=nlast;
}
}
return res;
}
}