• 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;
       
        }
    }
  • 相关阅读:
    前端的貌似不顺道整个 小程序,不是那么回事哈
    sql server 大批数据插入时,时间过长的问题
    web api 权限控制
    推荐一个测试Web API, web service工具
    ConcurrentDictionary的用法
    Socket
    微信小程序(一)
    List常用几种方式
    c# 文件下载
    自定义身份验证
  • 原文地址:https://www.cnblogs.com/patatoforsyj/p/9496127.html
Copyright © 2020-2023  润新知