题目
二叉树的层序遍历
给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。
题解
class Solution {
public List<List<Integer>> levelOrder(TreeNode root) {
// 可以理解为 list中 存放list
List<List<Integer>> ret = new ArrayList<List<Integer>>();
if(root==null){
return ret;
}
// 层序遍历
// 就是按照广度遍历 用队列可以实现广度遍历
Queue<TreeNode> queue = new LinkedList<TreeNode>();
queue.offer(root);
while(!queue.isEmpty()){
List<Integer> level = new ArrayList<Integer>();
int currentLevelSize = queue.size();
for(int i=0;i<currentLevelSize;i++){
// 定义一个树节点接收
TreeNode node = queue.poll();
level.add(node.val);
// 左节点是否为空,进队。 有节点是否为空 进队
if(node.left!=null){
queue.offer(node.left);
}
if(node.right!=null){
queue.offer(node.right);
}
}
ret.add(level);
}
return ret;
}
}