题目描述:
从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。
解题思路:
使用递归的方法,每层使用level作为区别,不断遍历每层。
代码(java):
import java.util.ArrayList;
/*
public class TreeNode {
int val = 0;
TreeNode left = null;
TreeNode right = null;
public TreeNode(int val) {
this.val = val;
}
}
*/
public class Solution {
ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) {
ArrayList<ArrayList<Integer> > res=new ArrayList<ArrayList<Integer> >();
if(pRoot==null)return res;
printLevel(res,pRoot,0);
return res;
}
public void printLevel(ArrayList<ArrayList<Integer> > res,TreeNode pRoot,int level){
if(pRoot==null)return;
if(res.size()<level+1){
ArrayList<Integer> item=new ArrayList<Integer>();
item.add(pRoot.val);
res.add(item);
}
else{
res.get(level).add(pRoot.val);
}
printLevel(res,pRoot.left,level+1);
printLevel(res,pRoot.right,level+1);
}
}