----------------------------------------------本题链接----------------------------------------------
本题与剑指offer32题相同
题目描述
给定一个二叉树,返回该二叉树层序遍历的结果,(从左到右,一层一层地遍历)
例如:
给定的二叉树是{3,9,20,#,#,15,7},
示例
输入
{1,2}
返回值
[[1],[2]]
思路
二叉树的层序遍历,考虑使用bfs
算法过程
- 判断异常情况
- bfs遍历每一层数据,并存储在队列中
- 输出结果
解答
public class Solution {
/**
*
* @param root TreeNode类
* @return int整型ArrayList<ArrayList<>>
*/
public ArrayList<ArrayList<Integer>> levelOrder (TreeNode root) {
ArrayList<ArrayList<Integer>> res = new ArrayList<ArrayList<Integer>>();
if(root == null) return res;
Queue<TreeNode> queue = new LinkedList<TreeNode>(){{ add(root); }};
while(!queue.isEmpty()){
ArrayList<Integer> tmp = new ArrayList<>();
for(int i = queue.size(); i >0 ; i--){
TreeNode node = queue.poll();
tmp.add(node.val);
if(node.left != null) queue.offer(node.left);
if(node.right != null) queue.offer(node.right);
}
res.add(tmp);
}
return res;
}
}