剑指 Offer 32 - II. 从上到下打印二叉树 II

题目:从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。
解法:广度优先搜索
思路:使用队列,队列存放的是当前某一层的所有节点,所以出队时同时把节点加入到list中,那么这个list存放的将是某一层的所有节点
代码:
/**

  • Definition for a binary tree node.
  • public class TreeNode {
  • int val;
    
  • TreeNode left;
    
  • TreeNode right;
    
  • TreeNode(int x) { val = x; }
    
  • }
    */
    class Solution {
    public List<List> levelOrder(TreeNode root) {
    if(root==null){
    return new ArrayList();
    }
    List<List> res = new ArrayList();
    Queue queue = new LinkedList(); //队列
    queue.offer(root); //根结点入队
    while(!queue.isEmpty()){
    List list = new ArrayList();
    for(int i=queue.size();i>0;i--){ //注意不能0到size-1,因为size会改变
    TreeNode t = queue.poll();
    list.add(t.val);
    if(t.left!=null){
    queue.offer(t.left);
    }
    if(t.right!=null){
    queue.offer(t.right);
    }
    }
    res.add(list);
    }
    return res;
    }
    }
    注意:队列判空和list判空都不能使用xxx != null,而应使用isEmpty,isEmpty是判断内容是否为空
posted @ 2020-12-02 14:16  for_ward  阅读(49)  评论(0)    收藏  举报