写算法—二叉树的层序遍历

Posted 伯爵科技EarlTech

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了写算法—二叉树的层序遍历相关的知识,希望对你有一定的参考价值。

前言


    一周又过半,今天带来的分享是二叉树的层序遍历题解,在leetcode题号为102。这道题的标签为广度遍历和二叉树,下面一起来看看具体的解决思路吧。

正文


题目:

给定你一个二叉树,请你返回其按层序遍历得到的节点值。(即逐层地从左到右访问所有节点),为了更好地说明题目的意思,我从原题目中截了图,如下:

解题思路:


1. 使用一个队列,利用队列的先进先出的特点,来分别获取每一层。


2. 边遍历每一层的节点,边把遍历到的节点的子节点分别放到队列尾部。


3. 遍历每一层时,为了确保能够准确把整一层遍历完再去遍历下一层,需先获取当前队列的长度。


解题代码:

public List<List<Integer>> levelOrder(TreeNode root) { List<List<Integer>> result = new ArrayList<>(); if (root == null) { return result; } Queue<TreeNode> queue = new LinkedList<>(); queue.offer(root); while (!queue.isEmpty()) { int size = queue.size(); List<Integer> line = new ArrayList<>(); for (int i = 0; i < size; i++) { TreeNode node = queue.poll(); if (node == null) { continue; } line.add(node.val); TreeNode left = node.left; if (left != null) { queue.offer(left); } TreeNode right = node.right; if (right != null) { queue.offer(right); } } result.add(line);        } return result; }

结语

    

    本次的分享到这里就结束了,祝大家周三早上好。

以上是关于写算法—二叉树的层序遍历的主要内容,如果未能解决你的问题,请参考以下文章

#yyds干货盘点# leetcode算法题:二叉树的层序遍历

算法20:求二叉树最宽的层有多少个节点(层序遍历续)

基础算法,二叉树的层序遍历!

LeetCode Java刷题笔记—102. 二叉树的层序遍历

建立二叉树,层序、先序遍历

二叉树的层序遍历二叉树叶节点输出算法求二叉树的高度层序创建一棵二叉树