从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.Queue;
class TreeNode {
int val = 0;
TreeNode left = null;
TreeNode right = null;
public TreeNode(int val) {
this.val = val;
}
}
public class ddd {
public ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) {
ArrayList<ArrayList<Integer>> alist=new ArrayList<ArrayList<Integer>>();
Queue<TreeNode> qu=new LinkedList<TreeNode>();
Queue<TreeNode> qu2=new LinkedList<TreeNode>();
if(pRoot==null){
return alist;
}
qu.add(pRoot);
while(!qu2.isEmpty() || !qu.isEmpty()){
ArrayList<Integer> list=new ArrayList<Integer>();
while(!qu.isEmpty() &&qu.peek()!=null){
qu2.add(qu.peek());
list.add(qu.peek().val);
qu.remove();
}
alist.add(list);
while(!qu2.isEmpty() && qu2.peek()!=null){
if(qu2.peek().left!=null){
qu.add(qu2.peek().left);
}
if(qu2.peek().right!=null){
qu.add(qu2.peek().right);
}
qu2.remove();
}
}
return alist;
}
}