专栏首页码匠的流水账leetcode树之从上到下打印二叉树

leetcode树之从上到下打印二叉树

本文主要记录一下leetcode树之上到下打印二叉树

题目

从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。



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

    3
   / \
  9  20
    /  \
   15   7

返回其层次遍历结果:

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



提示:

    节点总数 <= 1000

注意:本题与主站 102 题相同:https://leetcode-cn.com/problems/binary-tree-level-order-traversal/

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/cong-shang-dao-xia-da-yin-er-cha-shu-ii-lcof
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

题解

/**
 * 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) {
        if (root == null) {
            return Collections.emptyList();
        }

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

        return result;
    }
}

小结

这是二叉树层次遍历的一个变种,区别在于每次poll的之前需要先记录下当前queue的size,即当前层的节点个数,然后按这个size去pull。

doc

  • 剑指 Offer 32 - II. 从上到下打印二叉树 II

本文分享自微信公众号 - 码匠的流水账(geek_luandun)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-09-21

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • leetcode树之从上到下打印二叉树

    这是二叉树层次遍历的一个变种,区别在于每次poll的之前需要先记录下当前queue的size,即当前层的节点个数,然后按这个size去pull。

    codecraft
  • 聊聊SWIM Protocol

    SWIM的全称是Scalable, Weakly-Consistent, Infection-Style, Processes Group Membership...

    codecraft
  • leetcode树之二叉树的层平均值

    这里借助队列进行层次遍历,每次先记录queue的size,然后按size来poll,取出元素累加sum,然后把不为null的node.left及node.rig...

    codecraft
  • leetcode树之从上到下打印二叉树

    这是二叉树层次遍历的一个变种,区别在于每次poll的之前需要先记录下当前queue的size,即当前层的节点个数,然后按这个size去pull。

    codecraft
  • LeetCode 103. 二叉树的锯齿形层次遍历

    给定一个二叉树,返回其节点值的锯齿形层次遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。

    TrueDei
  • 机器翻译之BLEU值

    BLEU(Bilingual Evaluation Understudy),相信大家对这个评价指标的概念已经很熟悉,随便百度谷歌就有相关介绍。原论文为BLEU:...

    种花家的奋斗兔
  • Python 基础(十七):装饰器

    不过都没关系,我们再以 Python 为例更通俗的解释一下:比如我们调用一个带有返回值的函数 x,此时函数 x 为我们返回一个函数 y,这个函数 y 就被称作闭...

    Python小二
  • SparkContext源码阅读

    SparkContext是spark的入口,通过它来连接集群、创建RDD、广播变量等等。

    用户3003813
  • Android学习之DialogFragment

    DialogFrament是Android sdk中的对话框基类,开发人员可以针对此类进行扩展。他可以扩展出Android中的多种对话框,比如alertdial...

    水击三千
  • jQuery源码解析之$().animate()(上)

    前言: 需要先看 jQuery源码解析之$.queue()、$.dequeue()和jQuery.Callbacks()

    进击的小进进

扫码关注云+社区

领取腾讯云代金券