专栏首页苦逼的码农【二叉树打卡2】从上往下打印二叉树

【二叉树打卡2】从上往下打印二叉树

【题目】

从上往下打印出二叉树的每个节点,同层节点从左至右打印。

【难度】

解答

这个像相当于二叉树四种遍历中的层序遍历了,其思想是采用广度优先遍历,借助一个辅助队列,步骤如下:

1、把二叉树的根节点 root 放进队列。

2、如果队列不为空,取出队列的一个节点,把这个节点的左右孩子放进队列中(为空的话就不用放),然后打印这个节点。

3、一直重复步骤 2 ,直到队列为空,此时遍历结束,代码如下:

代码如下:

    public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) {
        ArrayList<Integer> list = new ArrayList<>();
        Queue<TreeNode> queue = new LinkedList<>();
        if(root == null)
            return list;
        // 根放入队列
        queue.offer(root);
        while (!queue.isEmpty()) {
            TreeNode node =  queue.poll();
            list.add(node.val);
            if(node.left != null)
                queue.offer(node.left);
            if(node.right != null)
                queue.offer(node.right);
        }
        return list;
    }

二叉树的遍历中,有先序遍历、中序遍历、后续遍历,不过,如果你采用递归来做的话都比较简单,所以,我是建议,大家都要学会,不使用递归来做这三种遍历,而是利用利用队列和栈来辅助,进而在一个while循环中就能够进行这三种遍历了。

本文分享自微信公众号 - 苦逼的码农(di201805),作者:帅地

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

原始发表时间:2019-03-29

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 详解算法之重建二叉树

    从今天开始,公众号陆陆续续开始插写用动画形式展现算法题,如剑指offer、Leedcode里经典面试题型,同时也会更新数据结构与算法基础、网络原理等知识。

    帅地
  • 【二叉树打卡5】二叉树的后序遍历(非递归版)

    二叉树的后序遍历顺序是左-右-根。我们可以采用一个栈来辅助,不过它和前序遍历以及中序遍历还是有点区别的,我们把后序遍历的结果放到一个 LinkedList 容器...

    帅地
  • 如何自己打造一个阻塞队列

    较长一段时间以来我都发现不少开发者对 jdk 中的 J.U.C(java.util.concurrent)也就是 Java 并发包的使用甚少,更别谈对它的理解了...

    帅地
  • 一天一大 lee(二叉树的层次遍历 II)难度:简单-Day20200906

    给定一个二叉树,返回其节点值自底向上的层次遍历。(即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)

    前端小书童
  • 如何根据二叉树的两种遍历方式重建二叉树(理论篇)

    我们知道,二叉树有三种不同的遍历方式:先序遍历,中序遍历和后序遍历。这三种遍历方式本质上是根据根节点的位置来命名的。根节点在前面,就是先序遍历;根节点在中间,就...

    青南
  • 二叉树---(3)前序遍历,中序遍历,后序遍历

            很多朋友在刚开始接触二叉树时,对前序遍历,中序遍历,后序遍历这三个遍历方式不太了解,很多博客中,上来就是实现方式,并没有清晰的阐述这三种遍历的步...

    IT云清
  • 二叉树的遍历回顾

    本文重点在于复习并总结 二叉树每种遍历方式的递归与迭代实现,图片和示例代码均来自《邓俊辉-数据结构》。

    李拜六不开鑫
  • 二叉树的前中后序遍历

    前序遍历主要思想是什么呢?从根节点开始,前序遍历访问左子树,遇到空节点则返回,然后再前序遍历访问右子树,遇到空节点则返回。

    看、未来
  • 一天一大 lee(二叉树的中序遍历)难度:中等-Day20200914

    递归方法采用了深度优先遍历的形式,一般可以采用深度优先遍历就可以采用广度优先遍历。

    前端小书童
  • XML 通用操作

    Xml格式: <?xml version="1.0" encoding="utf-8"?> <remotes> <remote ip="ipval">nameA...

    Java中文社群_老王

扫码关注云+社区

领取腾讯云代金券