题目描述
从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。
思路:
- 首先是按层次遍历,这个比上一个题目之字形简单,按层打印
- 我的思路是用一个深度标记,每一个深度代表一层的节点和一个arraylist
- 然后利用递归完成就可以了
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> > all=new ArrayList<ArrayList<Integer> >();
addOne(1,pRoot,all); //传入深度,根节点和总集合
return all;
}
//递归调用函数
void addOne(int depth,TreeNode root,ArrayList<ArrayList<Integer> > all){
if(root==null) return;
if(depth>all.size())
all.add(new ArrayList<Integer>());
all.get(depth-1).add(root.val); //一开始深度为1,所以第一个集合要为下标0
addOne(depth+1,root.left,all);
addOne(depth+1,root.right,all);
}
}