题目:
给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。
例如:
给定二叉树: [3,9,20,null,null,15,7],
3
/
9 20
/
15 7
返回其层次遍历结果:
[
[3],
[9,20],
[15,7]
]
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Queue;
/**
* @Author dfpeng
* @Date 2019/7/24
*/
public class Solution {
public List<List<Integer>> levelOrder(TreeNode root) {
List<List<Integer>> res=new ArrayList<>();
if (root==null){
return res;
}
int start=0,end=1;
Queue<TreeNode> layer=new LinkedList<>();
layer.offer(root);
List<Integer> list=new ArrayList<>();
while (!layer.isEmpty()){
TreeNode node=layer.poll();
list.add(node.val);
start++;
if (node.left!=null){
layer.offer(node.left);
}
if (node.right!=null){
layer.offer(node.right);
}
if (start==end){
start=0;
end=layer.size();
res.add(list);
list=new ArrayList<>();
}
}
return res;
}
}
class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int x) {
val = x;
}
}