zoukankan      html  css  js  c++  java
  • 102. 二叉树的层序遍历

     

     https://leetcode-cn.com/problems/binary-tree-level-order-traversal/solution/er-cha-shu-de-ceng-ci-bian-li-by-leetcode/

    /**
     * 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 <TreeNode> queue=new LinkedList<>();//队列,用Queue接口的LinkedList实现,一个队列在一次循环刚开始时,只存储当前这一层的元素。每遍历一个元素,就把该元素子节点入队
            List<List<Integer>> res=new ArrayList<List<Integer>>();//结果
            if(root==null) return res;//根节点为空,直接返回
            int leavel=0;//第几层
    
            queue.add(root);
            while(!queue.isEmpty())
            {
                res.add(new ArrayList<>());
                int level_length = queue.size();//不能直接用size当成循环条件,随着出列,长度越来越小
                for(int i=0;i<level_length;i++)
                {
                    TreeNode cur=queue.remove();//出列
                    res.get(leavel).add(cur.val);
                     if(cur.left!=null) queue.add(cur.left);
                    if(cur.right!=null) queue.add(cur.right);//左右子节点入列,可以看出,每一次,队列里面包含的都是一行所有的元素
                }
                leavel++;
    
            }
            return res;
        }
    }
    

      

  • 相关阅读:
    Docker
    Alfred Workflow
    AWS Lambda
    XPath
    WebMagic
    Splash
    Selenium
    代理服务器
    JSONPath
    Sqlserver 查询分组 记录
  • 原文地址:https://www.cnblogs.com/lzh1043060917/p/12826640.html
Copyright © 2011-2022 走看看