求二叉树的层序遍历
描述
给定一个二叉树,返回该二叉树层序遍历的结果,(从左到右,一层一层地遍历)
例如:
给定的二叉树是{3,9,20,#,#,15,7},
该二叉树层序遍历的结果是
[
[3],
[9,20],
[15,7]
]
实现代码:
可以参考上一篇层序遍历的步骤
import java.util.*;
/*
* public class TreeNode {
* int val = 0;
* TreeNode left = null;
* TreeNode right = null;
* }
*/
public class Solution {
/**
*
* @param root TreeNode类
* @return int整型ArrayList<ArrayList<>>
*/
public ArrayList<ArrayList<Integer>> levelOrder (TreeNode root) {
// write code here
ArrayList<ArrayList<Integer>> res = new ArrayList<ArrayList<Integer>>();
Queue<TreeNode> queen = new LinkedList<TreeNode>();
if(root != null){
queen.add(root);//不为空则直接添加
}
while(!queen.isEmpty()){
//定义一个临时存储的集合
ArrayList<Integer> temp = new ArrayList<Integer>();
//遍历每一层的节点
for(int i = queen.size(); i>0;i--){
TreeNode node = queen.poll();//取结点
temp.add(node.val);//每遍历一个节点就往集合放入
if(node.left != null){
queen.add(node.left);
}
if(node.right != null){
queen.add(node.right);
}
}
res.add(temp);//节点添加进入res
}
return res;
}
}