给定一个二叉树,返回该二叉树层序遍历的结果,(从左到右,一层一层地遍历)
例如:
给定的二叉树是{3,9,20,#,#,15,7},
我的解法:
在前序遍历的基础上,增加一个深度参数,结果用集合保存,保存位置为相应的深度索引
/*
* public class TreeNode {
* int val = 0;
* TreeNode left = null;
* TreeNode right = null;
* public TreeNode(int val) {
* this.val = val;
* }
* }
*/
ArrayList<ArrayList<Integer>> lists=new ArrayList<>();
public ArrayList<ArrayList<Integer>> levelOrder (TreeNode root) {
// write code here
a(root,0);
return lists;
}
public void a(TreeNode root,int deepNum){
if(root==null)
return;
ArrayList<Integer> list;
//看看是否已经遍历过一些了,如果没有就新建,有了则往后面加,之后再重新插入到lists对应位置,通过add或set
if(lists.size()<deepNum+1){
list= new ArrayList<>();
list.add(root.val);
lists.add(list);
} else{
list= lists.get(deepNum);
list.add(root.val);
lists.set(deepNum,list);
}
a(root.left,deepNum+1);
a(root.right,deepNum+1);
}