Python剑指offer:分行从上到下打印二叉树
从上到下按层打印二叉树,同一层的节点按照从左到右
的顺序打印,每一层打印到第一行,例如本题中上一个问题的二叉树
输出形式会是:
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:分行从上到下打印二叉树相关推荐
- 剑指offer 32. 从上到下打印二叉树
声明:本系列博客是对何海涛<剑指offer>的关键点总结. 1.不分行从上到下打印二叉树 1.1. 问题描述 从上到下打印出二叉树的每一个结点,同一层的结点按照从左到右的顺序打印. 如二叉 ...
- 剑指 Offer 32 . 从上到下打印二叉树
main函数测试代码: 按标准输入输出,比如输入: 3,9,20,null,null,15,7 public static void main(String[] args) {//输入3,9,20,n ...
- 《剑指offer》-- 从上往下打印二叉树、二叉搜素树的后序遍历、二叉树中和为某一值的路径、二叉树与双向链表
一.从上往下打印二叉树: 1.题目: 上往下打印出二叉树的每个节点,同层节点从左至右打印. 2.解题思路: 用arraylist模拟一个队列来存储相应的TreeNode. 3.代码实现: public ...
- 剑指offer——32.从上到下打印二叉树
题目: 从上往下打印出二叉树的每个节点,同层节点从左至右打印. 知识点: 像这种不是按照指针顺序打印的都需要引入辅助空间,由于分析可知,先进先出,因此我们引入了两端都可进出的队列deque,常用操作, ...
- 《剑指offer》从上往下打印二叉树
题目:从上往下打印出二叉树的每个节点,同层节点从左至右打印. 解析:此题利用队列可以很好的解决层次打印,只需要按顺序入队以及出队就可以了(一点说明:root为null的时候需要考虑,java中的队列是 ...
- 剑指offer之从上到下打印二叉树
从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印. 例如: 给定二叉树: [3,9,20,null,null,15,7], 返回: [3,9,20,15,7] 来源:力扣(LeetC ...
- 剑指Offer之从上往下打印二叉树
题目描述 从上往下打印出二叉树的每个节点,同层节点从左至右打印. 解题思路 二叉树的层次遍历,水题...有一个坑:如果root是空的,直接返回空vector,一定要注意边界条件!!!!!!!!! AC ...
- 剑指offer:从上往下打印二叉树
文章目录 分析 来源 分析 思路 典型的bfs模板题,这里使用STL中的queue,没用数组模拟队列. STL的思路:初始化队列时,根root入队:对于bfs主体过程while循环内,取队头元素,队头 ...
- 《剑指Offer》 从上往下打印出二叉树
题目描述: 从上往下打印出二叉树的每个节点,同层节点从左至右打印. 思路: 其实就是层序遍历,设置一个TreeNode*类型的队列s,用来保存二叉树层序遍历的节点,因为队列是先进先出,所以很好地控制了 ...
- 剑指offer23:从上到下打印二叉树
题目描述 从上往下打印出二叉树的每个节点,同层节点从左至右打印. 解题思路 用队列来实现: 从根节点开始,每次打印一个节点都判断该节点是否有子节点,如果有则放在队列末端: 取出队列最前面的节点,重复1 ...
最新文章
- C# ASP.NET 开发指引简要
- 基于LSTM电商评论情感分析-多评价指标可视化版(内附源码)【自然语言处理NLP-100例】
- 机器学习-数据科学库(第一天)
- 网络调试指令ping、telnet、curl
- 汇付 支付,痛苦的接入过程
- 不允许更改采购订单币种
- yum客户端的配置文件的格式
- java 反射 main_java – 通过反射访问main方法中的局部变量
- 流量一天一个台阶,谈映客直播服务端架构优化之路
- Webpower携手梅花网,打造优雅的SaaS产品服务
- UVA - 11729 Commando War
- SceneFlow Dataset
- IC卡读写器的应用有哪些?
- win10计算机无法复制文件,win10 电脑复制后粘贴没反应问题的解决方法
- 10个小窍门,让你轻松准确搜索(转)
- 促进早期的父母-婴儿情感联系可以改善早产儿的皮质网络
- 网联清算平台45家股东名单出炉【附股权明细表】
- 自己撸一个Wordcount
- Android 10.0相关权限的变更(使用WiFi Direct必须打开定位)
- android 24节气及节日,Android Tasker应用之农历节气和自定义节日小插件 | 树叶的BLOG...
热门文章
- ARM汇编 beq和bne
- Pat乙级 1058 选择题
- 显示android缓存文件,android – 使用ACTION_VIEW在缓存目录中打开文件
- 成功打开华三模拟器后,创建设备完成却启动设备失败
- Spring核心——IOC处理器扩展
- redis与spring的完全集成
- 【CentOS7-Python系列】之一【VMwareWorkstation安装CentOS7】
- 怎样定义网页里的关键字关键词
- win 7 新建文件夹 new folder Item Not Found 解决办法
- js如何动态向 fileaddress: [fromurl]添加数据_N+增强能力系列(3) | 动态KV模块