zoukankan      html  css  js  c++  java
  • 剑指Offer32-Ⅱ从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。

    /**
     * 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<Integer>> levelOrder(TreeNode root) {
            
         //和上题的思路基本一致,通过Queue队列的FIFO特性,以及其中的API方法来完成广度遍历
         Queue<TreeNode> queue=new LinkedList<>();
         //创建中转队列,通过它来存储子树
         Queue<TreeNode> temp=new LinkedList<>();
         queue.offer(root);
          List<List<Integer>> totall=new ArrayList<List<Integer>>();
          //先处理边界情况
          if(root==null) return totall;
         while(!queue.isEmpty()){
         List<Integer> part =new ArrayList<Integer>();
         while(!queue.isEmpty()){
             //取出队列queue中的树,并打印其根节点值
             TreeNode node=queue.poll();
             part.add(node.val);
             //将取出的树的左右子树存到temp队列中
             if(node.left!=null) temp.offer(node.left);
             if(node.right!=null) temp.offer(node.right);
         }
         //此时queue中的所有元素已经都取出来了,所以将temp中的所有元素复制到queue队列中,注意此时不能用queue=temp,
         //因为这样只是将queue队列指向了temp队列指向的内存地址,后面将temp清空了,那么queue也就指向空了,
         //则程序直接结束。
         queue.addAll(temp);
         temp.clear();
         totall.add(part);
         }
    return totall;
        }
    }
  • 相关阅读:
    菜根谭#69
    菜根谭#68
    菜根谭#67
    菜根谭#66
    菜根谭#65
    菜根谭#64
    菜根谭#63
    更新centos本地仓库(换源)
    docker初探
    centos python版本升级到3.x
  • 原文地址:https://www.cnblogs.com/zwwang/p/13276075.html
Copyright © 2011-2022 走看看