题目描述

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

解析:这实际上就是二叉树的层序遍历。规律如下:每次打印节点,如果该节点有子节点,则将子节点放入队列末尾,然后取出队列头部最早进入队列的节点,重复上述操作直至队列为空。用list模拟队列。

代码如下:

class Solution:# 返回从上到下每个节点值列表,例:[1,2,3]def PrintFromTopToBottom(self, root):# write code hereres = []queue = []if not root:return resqueue.append(root)while queue:tmp = queue.pop(0)res.append(tmp.val)if tmp.left:queue.append(tmp.left)if tmp.right:queue.append(tmp.right)return res

扩展1:分行从上到下打印二叉树

题目描述

从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。

解析:层序遍历的变种,本质相同,方法类似。

代码如下:

class Solution:# 返回二维列表[[1,2],[4,5]]def Print(self, pRoot):# write code hereres = []if not pRoot:return resqueue = [pRoot]while queue:level = []next = []for tmp in queue:level.append(tmp.val)if tmp.left:next.append(tmp.left)if tmp.right:next.append(tmp.right)res.append(level)queue = next[:]return res

扩展2:之字形打印二叉树

题目描述

请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。

解析:层序遍历的变种。

代码如下:

class Solution:def Print(self, pRoot):# write code hereres = []if not pRoot:return resqueue = [pRoot]k = 0while queue:level = []next = []for tmp in queue:level.append(tmp.val)if tmp.left:next.append(tmp.left)if tmp.right:next.append(tmp.right)if k & 1 == 0:res.append(level)else:level.reverse()res.append(level)queue = next[:]k = k + 1return res

2019.3.21

二叉树高度的代码解析_剑指offer 从上到下打印二叉树相关推荐

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  8. 链表怎么输出最后一个元素无空格_剑指offer系列----从尾到头打印链表

    从尾到头打印链表 信息卡片 时间:2020-03-23 题目:从尾到头打印链表 tag:list 题目描述 输入一个链表,按链表从尾到头的顺序返回一个 ArrayList. 01 调用 reverse ...

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

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

最新文章

  1. python代码需要背吗-20个Python代码段,你需要立刻学会,好用到哭!
  2. python web为什么不火-Python这么火,为何有人说Python不好找工作?
  3. Spring5源码 - 05 invokeBeanFactoryPostProcessors 源码解读_2
  4. Java编程基础篇第四章
  5. Module build failed (from ./node_modules/babel-loader/lib/index.js) 错误解决
  6. 元宇宙行业深度研究报告:为什么元宇宙是下一代互联网?
  7. 防腐投加器需要加盐吗_果干、果脯、蜜钱、水果脆片,哪个有营养?你吃对了吗?...
  8. ListView常用属性、方法
  9. Jsoncpp 使用方法大全
  10. 定了!这 35 所高校将设人工智能本科专业!
  11. opencv图像直方图的计算及绘制
  12. 极速PDF打开文件后工具栏不显示怎么办
  13. GitHub 中国区前 100 名到底是什么样的人?
  14. C# 判断是否是节假日
  15. 【Azure 应用服务】NodeJS Express + MSAL 应用实现AAD登录并获取AccessToken -- cca.acquireTokenByCode(tokenRequest)
  16. app渗透之Burp抓取app数据包
  17. 跳槽时,这些Java面试题必须会,99%会被问到!
  18. 神仙程序媛小姐姐的一些列Java教程,从小白到进阶,春招和秋招必备的面试题,全站式保姆的Java教程导航帖(未完结)
  19. VR室内装修设计给客户不一样体验和效果
  20. Eyeshot Fem 2022.436 Crack

热门文章

  1. 【详谈 Delta Lake 】系列技术专题 之 Streaming(流式计算)
  2. 如何优雅的理解HBase和BigTable
  3. 轻松构建基于 Serverless 架构的弹性高可用视频处理系统
  4. 应用实时监控 ARMS 上线用户行为回溯功能
  5. 时尚电商新赛道:揭秘 FashionAI 技术
  6. 双十一高并发场景背后的数据库RDS技术揭秘
  7. 手把手,教你用MaxCompute+OpenSearch搭建分布式搜索引擎
  8. 从质疑到成为必选项,低代码技术发展及 2022 展望
  9. 大数据,从青铜到王者
  10. 入门篇|学渣是如何自学数据结构的?