思路:BFS
1、根节点加入队列;
2、遍历队列中的节点,将节点的子节点加入队列; (如不需要逐行,则结束)
3、如何实现逐行?需要记录每行队列的长度;
代码:
public List<List<Integer>> levelOrder(TreeNode root) {
List<List<Integer>> reslist = new ArrayList<>();
Queue<TreeNode> queue = new LinkedList<>();
TreeNode node;
int size;
if(root == null)
return null;
queue.offer(root);
while(!queue.isEmpty()) {
List<Integer> tmplist = new ArrayList<>();
size = queue.size();
while(size != 0) {
node = queue.poll();
tmplist.add(node.val);
size--;
if(node.left != null)
queue.offer(node.left);
if(node.right != null)
queue.offer(node.right);
}
reslist.add(tmplist);
}
}