标签:blog add while queue bfs 多行 另一个 题目 return
题目:从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。
思路:设置两个指针,一个指向当前层最右,另一个指向现在遍历的节点,,基本就是bfs。。。加一个换行判断
ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) { if(pRoot==null) return new ArrayList<>(); TreeNode last=pRoot; TreeNode nlast=null; LinkedList<TreeNode> queue=new LinkedList<TreeNode>(); ArrayList<Integer> temp=new ArrayList<Integer>(); ArrayList<ArrayList<Integer>> res=new ArrayList<ArrayList<Integer>>(); queue.add(pRoot); while(!queue.isEmpty()){ TreeNode cur=queue.poll(); temp.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(temp); temp=new ArrayList<Integer>(); last=nlast; } } return res; }
标签:blog add while queue bfs 多行 另一个 题目 return
原文地址:http://www.cnblogs.com/team42/p/6691797.html