二叉树的层次遍历
题目描述:
给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。
例如:
给定二叉树: [3,9,20,null,null,15,7]
,
思路:
运用队列记录每一层的节点,定义一个变量记录本层节点数目,以便于创建新列表操作。
public static List<List<Integer>> levelOrder(TreeNode root) {
List<List<Integer>> l = new ArrayList<List<Integer>>();
List<Integer> ll;
Queue<TreeNode> q = new LinkedList<TreeNode>();
if(root==null)return l;
TreeNode temp ;
q.add(root);
while(true) {
int size = q.size();//此时队列大小
ll = new ArrayList<Integer>();
while(size>0) {
temp = q.poll();
ll.add(temp.val);
size--;
if(temp.left!=null) {
q.add(temp.left);
}
if(temp.right!=null) {
q.add(temp.right);
}
}
l.add(ll);
if(q.size()==0)break;
}
return l;
}