问题描述
从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。
解题思路
按层次遍历即可
代码
public static ArrayList<ArrayList<Integer>> traversalByLayer(TreeNode<Integer> pRoot){
ArrayList<ArrayList<Integer> > res = new ArrayList<>();
if(pRoot==null) return res;
ArrayList<TreeNode<Integer>> cur = new ArrayList<>();
cur.add(pRoot);
while(cur.size()>0){
ArrayList<TreeNode<Integer>> next = new ArrayList<>();
ArrayList<Integer> curNums = new ArrayList<>();
for(TreeNode node:cur){
curNums.add((int)node.val);
if(node.left!=null) next.add(node.left);
if(node.right!=null) next.add(node.right);
}
res.add(curNums);
cur = next;
}
return res;
}