zoukankan      html  css  js  c++  java
  • 每天1题算法题(2)-二叉树的层序遍历

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

    示例:
    二叉树:[3,9,20,null,null,15,7],

    3
    /
    9 20
    /
    15 7
    返回其层次遍历结果:

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

    解答

    1.使用广度优先算法,加上level标记当前层

    class Solution {
        public List<List<Integer>> levelOrder(TreeNode root) {
            // queue先进先出,每次放入到尾部,每次在首部移出
            List<List<Integer>> response = new ArrayList<List<Integer>>();
            if(root == null) {
                return response;
            }
            Queue<TreeNode> queue = new LinkedList();
            queue.offer(root);
            while(!queue.isEmpty()) {
                int currentLevelSize = queue.size();
                List<Integer> levelTreeNodes = new ArrayList();
                for(int i=0; i<currentLevelSize; i++) {
                    TreeNode treeNode = queue.poll();
                    if(treeNode.left != null) {
                        queue.offer(treeNode.left);
                    }
                    if(treeNode.right != null) {
                        queue.offer(treeNode.right);
                    }
    
                    levelTreeNodes.add(treeNode.val);
                }
                response.add(levelTreeNodes);
            }
            return response;
        }
    }
  • 相关阅读:
    D. Constructing the Array
    B. Navigation System
    B. Dreamoon Likes Sequences
    A. Linova and Kingdom
    G. Special Permutation
    B. Xenia and Colorful Gems
    Firetrucks Are Red
    java getInstance()的使用
    java 静态代理和动态代理
    java 类加载机制和反射机制
  • 原文地址:https://www.cnblogs.com/s648667069/p/13687170.html
Copyright © 2011-2022 走看看