zoukankan      html  css  js  c++  java
  • [leetcode]_Binary Tree Level Order Traversal I && II

    题目:给定一棵二叉树,对其进行层次遍历,将遍历结果存入二维链表中。

    思路:二叉树的层次遍历关键在于使用Queue

    复习:

    Queue的定义。LinkedList实现了Queue接口,因此可用LinkedList来初始化一个Queue。

    Queue的使用。

      1、offer(),入队,当队列满掉时,返回false。

      2、poll(),返回队列头部元素并删除,当队列为空时,返回null。

      3、peek(),返回队列头部元素不删除,当队列为空时,返回null。

    代码:

     1     public ArrayList<ArrayList<Integer>> levelOrder(TreeNode root) {
     2         
     3         ArrayList<ArrayList<Integer>> level = new ArrayList<ArrayList<Integer>>();
     4      
     5         if(root == null) return level; //在面试时,可询问考官,当root== null时,返回空链表,还是null。
     6         
     7         Queue<TreeNode> q = new LinkedList<TreeNode>();
     8         q.offer(root);
     9         q.offer(new TreeNode(Integer.MAX_VALUE)); //作为层与层直接的间隔符
    10         
    11         ArrayList<Integer> oneLevel = new ArrayList<Integer>();
    12         
    13         while(!q.isEmpty()){
    14             TreeNode node = q.poll();
    15             
    16             if(node.val != Integer.MAX_VALUE){
    17                 
    18                 oneLevel.add(node.val);
    19                 if(node.left != null) q.offer(node.left);
    20                 if(node.right != null) q.offer(node.right);
    21                 
    22             }else{
    23                 if(oneLevel.size() == 0) break; //最后一个间隔符
    24                 
    25                 level.add(oneLevel);
    26                 oneLevel = new ArrayList<Integer>();
    27                 q.offer(new TreeNode(Integer.MAX_VALUE));
    28             
    29             }
    30         }
    31         return level;
    32     }
  • 相关阅读:
    bootstrap-treeview 实现级联选择
    MockMvc
    TCP的三次握手与四次挥手的理解
    多线程之按序打印
    java后端学习流程
    nginx安装配置
    今天给大家分享个玩具——树莓派
    nginx启动报错
    springboot自定义注解
    初探企业级应用开发主流前沿技术
  • 原文地址:https://www.cnblogs.com/glamourousGirl/p/3771083.html
Copyright © 2011-2022 走看看