给定一个二叉树,返回该二叉树层序遍历的结果,(从左到右,一层一层地遍历)
例如:
给定的二叉树是{3,9,20,#,#,15,7},
该二叉树层序遍历的结果是
[
[3],
[9,20],
[15,7]
]
思路:
1. 从左到右,可以使用二叉树的前序遍历
2. 层序遍历,则需要有层记录,可以root为第0层,以此类推
3. 使用递归,
代码实现
public class Solution {
ArrayList<ArrayList<Integer>> result = new ArrayList<ArrayList<Integer>>();
// ArrayList<Integer> item
/**
*
* @param root TreeNode类
* @return int整型ArrayList<ArrayList<>>
*/
public ArrayList<ArrayList<Integer>> levelOrder (TreeNode root) {
// write code here
if(null == root){return result;}
recur(root,0);
return result;
}
public void recur(TreeNode root, int level){
if(result.size() == level ){//利用数组的下标 和层级关联
result.add(new ArrayList<Integer>());
}
ArrayList<Integer> levelA = result.get(level);
levelA.add(root.val);
if(null != root.left){
recur(root.left, level+1);
}
if(null != root.right){
recur(root.right, level+1);
}
}
}