题目描述

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

思路

从上往下的遍历二叉树,不像前序,中序,后序一样,我们需要一个容器存储子节点,从左往右顺序添加,然后从左往右输出,遍历,这种先进先出规则的容器应该是队列,我们可以定义一个数组来模拟队列,存储当前结点下的子节点,遍历这个结点之后的子节点并添加到队列中,重复遍历过程,直到队列中结点全部被遍历为止。也称之为广度优先遍历。

代码

public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) {ArrayList<Integer> res = new ArrayList<>();ArrayList<TreeNode> quene =new ArrayList<>();if(root==null)return res;quene.add(root);while(quene.size()!=0){TreeNode temp = quene.remove(0);//remove(0)删除queue的第一个元素并将其返回,模拟了队列的弹出操作if(temp.left!=null){quene.add(temp.left);}if(temp.right!=null){quene.add(temp.right);}res.add(temp.val);}return res;
}

每天一道剑指offer-从上往下打印二叉树相关推荐

  1. C#刷剑指Offer | 从上到下打印二叉树

    [C#刷题]| 作者 / Edison Zhou 这是EdisonTalk的第288篇原创内容 我们来用之前学到的数据结构知识来刷<剑指Offer>的一些核心题目(精选了其中30+道题目) ...

  2. 二叉树高度的代码解析_剑指offer 从上到下打印二叉树

    题目描述 从上往下打印出二叉树的每个节点,同层节点从左至右打印. 解析:这实际上就是二叉树的层序遍历.规律如下:每次打印节点,如果该节点有子节点,则将子节点放入队列末尾,然后取出队列头部最早进入队列的 ...

  3. 剑指offer 从上往下打印二叉树

    题目描述 从上往下打印出二叉树的每个节点,同层节点从左至右打印. 解决方案: import java.util.ArrayList; import java.util.ArrayList; impor ...

  4. 剑指offer 从上到下打印二叉树

    思路:采用队列思想,一边进一边出,先进先出,选择双向队列deque(其实queue已经够了,没必要用deque) /* struct TreeNode {     int val;     struc ...

  5. [leetcode]剑指offer32-1.从上到下打印二叉树

    从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印. 例如: 给定二叉树: [3,9,20,null,null,15,7], 3 / 9 20 / 15 7 返回: [3,9,20,1 ...

  6. 剑指offer23 从上往下打印二叉树

    另一种写法,不用deque class Solution { public:vector<int> PrintFromTopToBottom(TreeNode* root) {vector ...

  7. 剑指offer:按之字形打印二叉树(栈|双向队列+中序遍历)

    1. 题目描述 /**请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推. */ 2. 双向队列 /*思路: ...

  8. 剑指offer之按之字形打印二叉树

    题目描述 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推. 解题思路 层次序遍历,然后存储到vector ...

  9. 【最佳解法】剑指 Offer 32 - III. 从上到下打印二叉树 III

    立志用最少的代码做最高效的表达 请实现一个函数按照之字形顺序打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,第三行再按照从左到右的顺序打印,其他行以此类推. 例如: 给定二叉 ...

  10. 【简洁+注释】剑指 Offer 32 - II. 从上到下打印二叉树 II

    立志用最少的代码做最高效的表达 从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行. 例如: 给定二叉树: [3,9,20,null,null,15,7], 返回其层次遍历结果 ...

最新文章

  1. azure多功能成像好用吗_如何使用Azure功能处理高吞吐量消息
  2. 00asp.net_js前后台代码互访
  3. php5.2的配置方,Windows IIS PHP 5.2 安装与配置方法
  4. 如何批量删除QQ浏览器指定历史记录和导出指定的历史记录
  5. c++ 字符串合并_C语言输入字符和字符串(所有函数大汇总)
  6. 第一次作业:读优秀博文有感
  7. 「Linux」VMware安装centos7(一)
  8. java如何实现线程_java中线程的三种实现方式
  9. 各种语音编码方法,所需要的带宽
  10. linux版 tar.bz2如何解压,Linux下*.tar.bz2等文件如何解压--转
  11. 北大软微计算机专硕分数线,给暑假在复习的考研党谈点经验,一战上岸北大软微总分400+数一148公共课299...
  12. 5G 产业链:基站天线和小基站爆发潜力大
  13. 汽车计算机英语词汇,汽车专用英语词汇?
  14. 基于ISO27001的数据中心信息安全管理体系
  15. 微信小程序(5)——下载图片
  16. PostgreSQL 设置远程访问
  17. iOS 朋友圈点赞评论,发布朋友圈,想要的都有
  18. EasyX窗口大小字号字体字体颜色的设置
  19. 美国国土安全部承认使用数据库追踪数百万手机用户
  20. tddl+diamond(一)

热门文章

  1. jQuery UI 拖动(Draggable) - 还原位置
  2. Lucene多字段排序备忘(Sorting by multiple fields)
  3. 安装win7和XP双系统的注意事项
  4. VS2005 SP1 “无法使用此产品的安装源,请确认安装源存在,并且您可以访问它”的错误...
  5. Spring框架利用PropertyPlaceholderConfigurer初始化加载多properties文件
  6. 5.支付平台架构:业务、规划、设计与实现 --- 账务系统
  7. 2.分布式服务架构:原理、设计与实战 --- 彻底解决分布式系统一致性的问题
  8. 17.高性能MySQL --- MySQL 分支与变种
  9. 1.swoole 简介
  10. 9. explain