zoukankan      html  css  js  c++  java
  • leetcode-二叉树的层次遍历(Java)

    给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。

    例如:
    给定二叉树: [3,9,20,null,null,15,7],

        3
       / 
      9  20
        /  
       15   7
    

    返回其层次遍历结果:

    [
      [3],
      [9,20],
      [15,7]
    ]

    借鉴其他人的思路,采用广度优先探索,使用队列。
      若根节点为空,直接返回;
     
           若根节点非空,则将根节点入队,然后,判断队列是否为空,若不为空,则将队首节点出队,访问,并判断其左右子节点是否为空,若不为空,则压入队列。
     
    /**
    * Definition for a binary tree node.
    * public class TreeNode {
    *     int val;
    *     TreeNode left;
    *     TreeNode right;
    *     TreeNode(int x) { val = x; }
    * }
    */
    class Solution {
        List<List<Integer>> res=new ArrayList();
        public List<List<Integer>> levelOrder(TreeNode root) {
           if(root==null)return res;                                //边界条件
           
            Queue<TreeNode> q=new LinkedList();             //创建的队列用来存放结点,泛型注意是TreeNode
            q.add(root);                                
            while(!q.isEmpty()){                        //队列为空说明已经遍历完所有元素,while语句用于循环每一个层次
                int count=q.size();     
                 List<Integer> list=new ArrayList();
                while(count>0){                             //遍历当前层次的每一个结点,每一层次的Count代表了当前层次的结点数目
                    TreeNode temp=q.peek();
                    q.poll();                                        //遍历的每一个结点都需要将其弹出
                    list.add(temp.val);
                    if(temp.left!=null)q.add(temp.left);      //迭代操作,向左探索
                    if(temp.right!=null)q.add(temp.right);
                    count--;
                }
                res.add(list);
            }
            return res;
       
        }
    }
  • 相关阅读:
    Java DbUtils简介
    Java JDBC 操作二进制数据、日期时间
    Java JDBC事务
    Java JDBC结果集的处理
    Java 使用properties配置文件加载配置
    Java JDBC的使用
    CSS3
    CSS 基础样式
    CSS 样式的使用方式、选择器
    HTML 表单
  • 原文地址:https://www.cnblogs.com/patatoforsyj/p/9496127.html
Copyright © 2011-2022 走看看