题目链接:二叉树的层序遍历
这个题目意思不用阐述了,直接看代码:
class Solution {
public List<List<Integer>> levelOrder(TreeNode root) {
if(root==null) return new ArrayList<>();
return bfs(root);
}
public List<List<Integer>> bfs(TreeNode root){
List<List<Integer>> res = new ArrayList<>();
Queue<TreeNode> q = new LinkedList<>();
q.add(root);
List<Integer> st = new ArrayList<>();
st.add(root.val);
res.add(st);
while(!q.isEmpty()){
int cnt = q.size();//每层节点个数
List<Integer> te = new ArrayList<>();
for(int i = 0;i < cnt;i++){
TreeNode node = q.poll();
if(node.left!=null){
q.add(node.left);
te.add(node.left.val);
}
if(node.right!=null) {
q.add(node.right);
te.add(node.right.val);
}
}
if(te.size()!=0) res.add(te);
}
return res;
}
}