从上到下按层打印二叉树,同一层的节点按照从左到右
的顺序打印,每一层打印到第一行,例如本题中上一个问题的二叉树
输出形式会是:
8
6 10
5 7 9 11

这道题和前面一道题十分类似,也可以用一个队列来保存要打印的节点。
为了把二叉树的每一行单独打印到一行里,我们需要两个变量:
一个变量表示当前层中还没有打印的节点数;另一个变量表示下一层节点数。

class TreeNode:def __init__(self, x):self.val = xself.left = Noneself.right = None
class Solution:def Print(self, root):if not root:return Nonequeue = [root]toBePrinted = 1  # 表示当前层中还没有打印的节点数nextLevel = 0    # 表示下一层的节点数while len(queue) > 0:currentRoot = queue.pop(0)# 按空格隔开,不换行输出print(currentRoot.val, end=" ")if currentRoot.left:queue.append(currentRoot.left)nextLevel += 1if currentRoot.right:queue.append(currentRoot.right)nextLevel += 1toBePrinted -= 1# 如果当前层未打印的节点数为0,就跳转到下一层if toBePrinted == 0:# 如果下一层没有东西了,就不再执行程序了if nextLevel == 0:breakprint("\n")toBePrinted = nextLevelnextLevel = 0pNode1 = TreeNode(8)
pNode2 = TreeNode(6)
pNode3 = TreeNode(10)
pNode4 = TreeNode(5)
pNode5 = TreeNode(7)
pNode6 = TreeNode(9)
pNode7 = TreeNode(11)pNode1.left = pNode2
pNode1.right = pNode3
pNode2.left = pNode4
pNode2.right = pNode5
pNode3.left = pNode6
pNode3.right = pNode7S = Solution()
S.Print(pNode1)

Python剑指offer:分行从上到下打印二叉树相关推荐

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

    声明:本系列博客是对何海涛<剑指offer>的关键点总结. 1.不分行从上到下打印二叉树 1.1. 问题描述 从上到下打印出二叉树的每一个结点,同一层的结点按照从左到右的顺序打印. 如二叉 ...

  2. 剑指 Offer 32 . 从上到下打印二叉树

    main函数测试代码: 按标准输入输出,比如输入: 3,9,20,null,null,15,7 public static void main(String[] args) {//输入3,9,20,n ...

  3. 《剑指offer》-- 从上往下打印二叉树、二叉搜素树的后序遍历、二叉树中和为某一值的路径、二叉树与双向链表

    一.从上往下打印二叉树: 1.题目: 上往下打印出二叉树的每个节点,同层节点从左至右打印. 2.解题思路: 用arraylist模拟一个队列来存储相应的TreeNode. 3.代码实现: public ...

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

    题目: 从上往下打印出二叉树的每个节点,同层节点从左至右打印. 知识点: 像这种不是按照指针顺序打印的都需要引入辅助空间,由于分析可知,先进先出,因此我们引入了两端都可进出的队列deque,常用操作, ...

  5. 《剑指offer》从上往下打印二叉树

    题目:从上往下打印出二叉树的每个节点,同层节点从左至右打印. 解析:此题利用队列可以很好的解决层次打印,只需要按顺序入队以及出队就可以了(一点说明:root为null的时候需要考虑,java中的队列是 ...

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

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

  7. 剑指Offer之从上往下打印二叉树

    题目描述 从上往下打印出二叉树的每个节点,同层节点从左至右打印. 解题思路 二叉树的层次遍历,水题...有一个坑:如果root是空的,直接返回空vector,一定要注意边界条件!!!!!!!!! AC ...

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

    文章目录 分析 来源 分析 思路 典型的bfs模板题,这里使用STL中的queue,没用数组模拟队列. STL的思路:初始化队列时,根root入队:对于bfs主体过程while循环内,取队头元素,队头 ...

  9. 《剑指Offer》 从上往下打印出二叉树

    题目描述: 从上往下打印出二叉树的每个节点,同层节点从左至右打印. 思路: 其实就是层序遍历,设置一个TreeNode*类型的队列s,用来保存二叉树层序遍历的节点,因为队列是先进先出,所以很好地控制了 ...

  10. 剑指offer23:从上到下打印二叉树

    题目描述 从上往下打印出二叉树的每个节点,同层节点从左至右打印. 解题思路 用队列来实现: 从根节点开始,每次打印一个节点都判断该节点是否有子节点,如果有则放在队列末端: 取出队列最前面的节点,重复1 ...

最新文章

  1. C# ASP.NET 开发指引简要
  2. 基于LSTM电商评论情感分析-多评价指标可视化版(内附源码)【自然语言处理NLP-100例】
  3. 机器学习-数据科学库(第一天)
  4. 网络调试指令ping、telnet、curl
  5. 汇付 支付,痛苦的接入过程
  6. 不允许更改采购订单币种
  7. yum客户端的配置文件的格式
  8. java 反射 main_java – 通过反射访问main方法中的局部变量
  9. 流量一天一个台阶,谈映客直播服务端架构优化之路
  10. Webpower携手梅花网,打造优雅的SaaS产品服务
  11. UVA - 11729 Commando War
  12. SceneFlow Dataset
  13. IC卡读写器的应用有哪些?
  14. win10计算机无法复制文件,win10 电脑复制后粘贴没反应问题的解决方法
  15. 10个小窍门,让你轻松准确搜索(转)
  16. 促进早期的父母-婴儿情感联系可以改善早产儿的皮质网络
  17. 网联清算平台45家股东名单出炉【附股权明细表】
  18. 自己撸一个Wordcount
  19. Android 10.0相关权限的变更(使用WiFi Direct必须打开定位)
  20. android 24节气及节日,Android Tasker应用之农历节气和自定义节日小插件 | 树叶的BLOG...

热门文章

  1. ARM汇编 beq和bne
  2. Pat乙级 1058 选择题
  3. 显示android缓存文件,android – 使用ACTION_VIEW在缓存目录中打开文件
  4. 成功打开华三模拟器后,创建设备完成却启动设备失败
  5. Spring核心——IOC处理器扩展
  6. redis与spring的完全集成
  7. 【CentOS7-Python系列】之一【VMwareWorkstation安装CentOS7】
  8. 怎样定义网页里的关键字关键词
  9. win 7 新建文件夹 new folder Item Not Found 解决办法
  10. js如何动态向 fileaddress: [fromurl]添加数据_N+增强能力系列(3) | 动态KV模块