题目:leetcode102. 二叉树的层序遍历
描述
给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。
思路
使用队列实现,首先计算出每一层的节点个数,然后将每一个节点弹出的同时将它的左节点和右节点一起加入队列。
代码
import java.util.ArrayList;
import java.util.Deque;
import java.util.LinkedList;
import java.util.List;
public class Solution {
public List<List<Integer>> levelOrder(TreeNode root)
{
if(root==null)
return new ArrayList<List<Integer>>();
Deque<TreeNode> deque=new LinkedList<>();
List<List<Integer>> result=new ArrayList<List<Integer>>();
deque.offer(root);
int length=0;
while(!deque.isEmpty())
{
List<Integer> tmp=new ArrayList<>();
length=deque.size();
while(length>0)
{
TreeNode node=deque.poll();
tmp.add(node.val);
if(node.left!=null)
deque.offer(node.left);
if(node.right!=null)
deque.offer(node.right);
length--;
}
result.add(tmp);
}
return result;
}
}